[electrum] refactor: move Send tab to its own module
Summary:
This move 1500+ lines of code from the main window god object to another module with limited interconnections. The main_window no longer needs to maintain the payement request and privkey sweeping state machines, and no longer needs to know the details of the zoo of widgets in the Send tab. The send tab still needs some knowledge of the main window API to trigger some statusbar or history updates, to access contacts stored in the Contacts tab, and to use some trivial helper functions that can easily be factored out in the future(get_decimal_point(), on_error(), show_transaaction(), password_dialog`...)
The send tab widget now deals with everything related to sending transactions, payment requests, invoices.
There is no change in behavior.
Depends on D18335
Test Plan:
git show --color-moved=dimmed_zebra --color-moved-ws=allow-indentation-change
Run the application and try to test all the touched components (send transactions, view transaction details, send to contacts, paste a URI in the recipient edit, open an URI on the command line, open a payment request...)
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Subscribers: Fabien
Differential Revision: https://reviews.bitcoinabc.org/D18324