Headers-first synchronization

Many changes:
* Do not use 'getblocks', but 'getheaders', and use it to build a headers tree.
* Blocks are fetched in parallel from all available outbound peers, using a
  limited moving window. When one peer stalls the movement of the window, it is
  disconnected.
* No more orphan blocks. At all. We only ever request a block for which we have
  verified the headers, and store it to disk immediately. This means that a
  disk-fill attack would require PoW.
* Require protocol version 31800 for every peer (released in december 2010).
* No more syncnode (we sync from everyone we can, though limited to 1 during
  initial *headers* sync).
* Introduce some extra named constants, comments and asserts.

This breaks reindexing, which cannot yet deal with out-of-order blocks on disk.
RPC additions after headers-first
Remove CheckMinWork, as we always know all parent headers
qt: Remove thousands separators after decimal point

Revert thousands separators after decimal point, as introduced in #4167.
qt: fix tablet crash. closes #4854.

This backports the relevant parts of:
https://codereview.qt-project.org/#/c/82689/
Move scriptutils.o to wallet
Move CAffectedKeysVisitor to wallet.cpp (remove ExtractAffectedKeys)
Rename scriptutils.o to wallet_ismine.o
Broken addresses on command line no longer trigger testnet.

When passing a bitcoin: URI on the command line, invalid addresses do not incorrectly send the
user to the test network.
Limit CNode::mapAskFor

Tighten resource constraints on CNode.
Avoid returning many "inv" orphans
Fix crashing bug caused by orphan(s) with duplicate prevout.hash
Add CaughtUp() function (needed by later commits)
Improve getheaders (sending) logging
debug "block"
Use syncheight instead of startheight for broadcasting block invs
Better logging of stalling
Display error when duplicate block received
Only send initial getheaders when !CaughtUp()
Change check whether to send block inv after UpdateTip