message: Teach ProcessNewBlock() how to handle a reindex
  During a reindex, we don't have nodes to send messages to, nor do
  we have a previous block hash for the genesis block, so we must
  take those conditions into account.
diff: @@ -3847,6 +3847,8 @@ bool ProcessNewBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDis
  if (!pblock->CheckBlockSignature())
  return error("ProcessNewBlock() : bad proof-of-stake block signature");
  + if (pblock->GetHash() != Params().HashGenesisBlock() && pfrom != NULL)
  + {
  //if we get this far, check if the prev block is our prev block, if not then request sync and return false
  BlockMap::iterator mi = mapBlockIndex.find(pblock->hashPrevBlock);
  if (mi == mapBlockIndex.end())
  @@ -3854,6 +3856,7 @@ bool ProcessNewBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDis
  pfrom->PushMessage("getblocks", chainActive.GetLocator(), uint256(0));
  return false;
  }
  + }
  while(true) {
  TRY_LOCK(cs_main, lockMain);
  