Do not flush the cache after every block outside of IBD
Use unordered_map for CCoinsViewCache with salted hash
Merge pull request #4494

bc42503 Use unordered_map for CCoinsViewCache with salted hash (Pieter Wuille)
Merge pull request #4505

d4d3fbd Do not flush the cache after every block outside of IBD (Pieter Wuille)
Only keep setBlockIndexValid entries that are possible improvements
Only remove actualy failed blocks from setBlockIndexValid
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