Begin headers-first synchronization

Many changes:
* ProcessBlock and AcceptBlock are split into ProcessBlockHeader and
  AcceptBlockHeader.
* Instead of 'getblocks', push out 'getheaders' to the sync node.
* Implement 'headers' P2P handler, causing headers to be included in
  the block index.
* pindexBest remains as pointer to the "current state of the UTXO
  set" (chainstate), meaning the point until where we are synchronized.
  pindexBestHeader is added as a pointer to the tip of the currently
  best known (and validated, except for transaction validity) header.
  pindexBest is guaranteed to be always an ancestor of (or equal to)
  pindexBestHeader.
* A new function SwitchToBestHeader finds the best header in the database,
  and switches to it. SwitchToBestBlock connects blocks along this best
  chain. These replace ConnectBestBlock.
* Actual blocks are only fetched along the known-best chain, using
  parallel block downloading logic in SendMessages. For each peer, a
  (bounded) list of requested blocks is maintained. New requests are
  sent asynchronously, as the requested blocks arrive. As the tree they
  belong to is already known, we can receive and store them out-of-order.
  This also means that the concept of orphan blocks disappears. If one
  peer stalls us, it is disconnected and the blocks requested from it are
  sent elsewhere. This is nicer both for us and for them.
* One exception to the headers-first syncing, is when we are fully synced
  (pindexBest==pindexBestHeader), and a new block 'inv' is announced. In
  this case, the block is fetched immediately ('getdata') without
  intermediary 'getheaders', to avoid the extra roundtrip. In case this
  received block does not connect, it is held in memory (just this one),
  until the blocks preceeding it are available.
* SetBestChain (which handled reorganizations) is no longer necessary, as
  SwitchToBestHeader and SwitchToBestBlock only ever connect/disconnect
  individual blocks. It is therefore replaced by two simpler functions,
  ConnectTip and DisconnectTip.
* In several places code is added to deal with the case that a
  CBlockIndex entry does not have corresponding block data available.
RPC updates after header-first synchronization