Remove tx from AlreadyAskedFor list once we receive it, not when we process it.
Allow -onlynet=onion to be used

Just an alias for onlynet=tor, but matches the new name
of the proxy option -onion= better.
Add IsReachable(net) function

Allows other parts of the program to query for reachable
status of a network. Similar to IsLimited(net).
Add GetNetworkName function

Returns the network name for an Network enum.
Fixes ignored qt 4.8 codecs path on windows when configuring with --with-qt-libdir
[Qt] move SubstituteFonts() above ToolTipToRichTextFilter

- doesn't belong to the ToolTipToRichTextFilter class so move it up
[Qt] ensure all class attributes are init to 0

- in BitcoinGUI and UnitDisplayStatusBarControl
[Qt] use BitcoinGUI::DEFAULT_WALLET constant in bitcoin.cpp
[Qt] disable tray interactions when client model set to 0

- this prevents the ability to fiddle around with the system tray when
  already shutting down (e.g. on slow shutdowns because of a proxy delay)
- extends solution for #4360
Add a way to limit deserialized string lengths

and use it for most strings being serialized.
Simplify serialize.h's exception handling

Remove the 'state' and 'exceptmask' from serialize.h's stream implementations,
as well as related methods.

As exceptmask always included 'failbit', and setstate was always called with
bits = failbit, all it did was immediately raise an exception. Get rid of
those variables, and replace the setstate with direct exception throwing
(which also removes some dead code).

As a result, good() is never reached after a failure (there are only 2
calls, one of which is in tests), and can just be replaced by !eof().

fail(), clear(n) and exceptions() are just never called. Delete them.
remove unused class CAddrMan; from db.h
Make CCryptoKeyStore::Unlock check all keys.

CCryptoKeyStore::Unlock has a loop to attempt decrypting each key which
 only executes once, likely due to a simple mistake when the code was
 originally written.

This patch fixes the behavior by making it check all keys. It also adds
 a fatal assertion in the case some decrypt but some do not, since that
 indicates that the wallet is in some kind of really bad state.

This may make unlocking noticeably slower on wallets with many keys.
Dont run full check every time we decrypt wallet.
Add a getutxos command to the p2p protocol. It allows querying of the UTXO set
given a set of outpoints.
Add boolean HaveWatchonly and signal NotifyWatchonlyChanged
[Qt] Add column Watch-only to transactions list
Don't poll showmyip.com, it doesn't exist anymore

Fixes #4679.

This leaves us with only one candidate, checkip.dyndns.org.
GetMyExternalIP should be phased out as soon as possible.
Merge pull request #4682

c33b983 Don't poll showmyip.com, it doesn't exist anymore (Wladimir J. van der Laan)
Reapply: Reject transactions with excessive numbers of sigops

Reverting was based on a misunderstanding, it appears.

Github-Pull: #4150