Use boost signals for callbacks from main to wallet

Conflicts:
	src/main.cpp
	src/main.h
Break dependency of init on wallet.

This required some code movement (what was CWalletTx::AcceptToMemoryPool
doing in main?), and adding a few explicit includes that used to be
implicit through init.h.

Conflicts:
	src/main.cpp
GUIUtil: make getSaveFileName() use native OS path separators

Conflicts:
	src/qt/guiutil.cpp
[Qt] additional small fixes for #3099 (new receive flow)

- remove 2 unneeded windowTitle attributes, which bloat our translations
- cleanup some unneeded .cpp/.h includes and class usages
- use a more generic string for clearing sendcoinsdialog and
  requestpaymentdialog
- edit 2 strings in BitcoinGUI and replace "edit" with "show" as this
  seems more clear in the context where it is used
Re-enable BitcoindComparisonTool:

 * Use the latest version, with limited memory usage, and path to
   on-disk db (try mouting qa/tmp on a tmpfs)\
 * enable -debug=net
 * re-enable BitcoindComparisonTool in pull-tester

Conflicts:
	Makefile.am
	qa/pull-tester/run-bitcoind-for-test.sh.in
qt: clean up signal handling in walletframe/walletview

Use proper signals everywhere.
Removes the need to store a pointer to the BitcoinGUI object in
the walletview.
Also removes the interdependence between setWalletModel / setBitcoinGUI.

Conflicts:
	src/qt/walletframe.cpp
qt: english language update

Conflicts:
	src/qt/bitcoinstrings.cpp
	src/qt/locale/bitcoin_en.ts
walletview: make backupWallet() use GUIUtil::getSaveFileName()

- this allows removal of several Qt headers and makes use of a
  standardized function in GUIUtil
- adds selected path to the UI output
walletview: clarify 2 comments
Make util phexdigit array reusable

class template base_uint had its own private lookup table.
This is saving 256 bytes per instantiation.

The result is not spectacular as bitcoin-qt has only shrinked of
about 1Kb but it is still valid improvement.

Also, I have replaced a for loop with a memset() call.

Made CBigNum::SetHex() use the new HexDigit() function.

Signed-off-by: Olivier Langlois <olivier@olivierlanglois.net>
Make large-reorg tests optional in block-tester
pull-tester.py: Re-enable coverage msg, new args to run test script
Gracefully handle the case when a DISTDIR already exists
Run block tester and test suite on Windows too (only on Jenkins)
Fix port binding by listening on port $BASHPID

Conflicts:
	qa/pull-tester/run-bitcoind-for-test.sh.in
Missed an RPC port

Conflicts:
	qa/pull-tester/run-bitcoind-for-test.sh.in
qt: make receive coins tab look more consistent with send coins tab

Use a GridLayout instead of a FormLayout. This makes the alignment
of the labels consistent between the tabs.
Generalize the remove-outputs check for fully-prunable transactions.

Instead of explicitly testing for the presence of any output, and
dealing with this case specially, just interpret it as an empty
CCoins.

The case previously caught using the HaveCoins check, is now handled
by the generic outs != outsBlock test.

Conflicts:
	src/core.h
fix wrong memcmp() usage in CKey::operator==

- add a check for CKey::size() of a and b (size can be 0 or 32)
- change the fixed value in memcmp() to use a.size() instead
- fixes #3090
-fuzzmessagestest=N : randomly corrupt 1-of-N sent messages

I needed this to test the new "reject" p2p message, but it should be generally
useful for fuzz-testing network message handling code.