Only remove actualy failed blocks from setBlockIndexValid
Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache
doc: remove any mention of SOCKS4

SOCKS4 support was removed in 0127a9b, as well as the `-socks=` option.
Fix typos in comments (missing i's).
Merge pull request #4575

ad08d0b Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache (Pieter Wuille)
Merge pull request #4496

5734d4d Only remove actualy failed blocks from setBlockIndexValid (Pieter Wuille)
Add comment about never updating nTimeOffset past 199 samples

Refer to issue #4521 for details.
Only keep setBlockIndexValid entries that are possible improvements
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