contrib/linearize: Guarantee that output is generated in-order

This was typically ensured implicitly by virtue of normal bitcoind
operation.  Adding an explicit check provides a stronger guarantee, and
it is cheap to add.
contrib/linearize: split block files based on year-month, not just year
Serializer simplifications after IMPLEMENT_SERIALIZE overhaul
Rename IMPLEMENT_SERIALIZE to ADD_SERIALIZE_METHODS
Use OR of respective block flags for masks
remove useless millisleep

reduces time to service requests improving performance
Remove DNS Seeds run by entities which were never well-established.
net: Remove MilliSleep from StopNode

I don't understand why it would be there in the first place. This looks
like voodoo, not programming.
Merge pull request #4671

550d4fa Remove DNS Seeds run by entities which were never well-established. (Matt Corallo)
Merge pull request #4820

910526d Use OR of respective block flags for masks (Pieter Wuille)
Merge pull request #4808

3f6540a Rename IMPLEMENT_SERIALIZE to ADD_SERIALIZE_METHODS (Pieter Wuille)
47eb765 Serializer simplifications after IMPLEMENT_SERIALIZE overhaul (Pieter Wuille)
Added XML syntax highlighting
Merge pull request #4842

fb51e28 Added XML syntax highlighting (himynameismartin)
Merge pull request #4790

9189f5f remove useless millisleep (phantomcircuit)
Merge pull request #4833

bbda402 net: Remove MilliSleep from StopNode (Wladimir J. van der Laan)
contrib/linearize: Add feature to set file's timestamp based on block header time.
Merge pull request #4762

399cdbc contrib/linearize: Add feature to set file's timestamp based on block header time. (Jeff Garzik)
8f5a423 contrib/linearize: split block files based on year-month, not just year (Jeff Garzik)
75400a2 contrib/linearize: Guarantee that output is generated in-order (Jeff Garzik)
Combine CCoinsViewCache's HaveCoins and const GetCoins into AccessCoins.

The efficient version of CCoinsViewCache::GetCoins only works for known-to-exist
cache entries, requiring a separate HaveCoins call beforehand. This is
inefficient as both perform a hashtable lookup.

Replace the non-mutable GetCoins with AccessCoins, which returns a potentially-NULL
pointer. This also decreases the overloading of GetCoins.

Also replace some copying (inefficient) GetCoins calls with equivalent AccessCoins,
decreasing the copying.
Use ModifyCoins instead of mutable GetCoins.

Replace the mutable non-copying GetCoins method with a ModifyCoins, which
returns an encapsulated iterator, so we can keep track of concurrent
modifications (as iterators can be invalidated by those) and run cleanup
code after a modification is finished.

This also removes the overloading of the 'GetCoins' name.
Get rid of CCoinsView's SetCoins and SetBestBlock.

All direct modifications are now done through ModifyCoins, and BatchWrite is
used for pushing batches of queued modifications up, so we don't need the
low-level SetCoins and SetBestBlock anymore in the top-level CCoinsView class.