changed block adding and popping function calls

Blocks don't actually have the transactions inside them, but rather just
the transaction hashes, so add_block will now take a list of
transactions and pop_block will return a list of transactions.  Given
the other metadata being supplied to add_block, it might be more correct
to create a new struct "full_block" or similar that has said metadata
and the full transactions.  Revisit in the future.
Minor convenience function and comment changes to BlockchainDB.
Large commit -- redo block_to_main_chain with BlockchainDB

This commit is a rework of the handle_block_to_main_chain function to
bring it in line with BlockchainDB.  It also modifies various functions
that are called therein.

As this is an incredibly large commit, but all related things, putting
it in multiple commits seemed strange but fully documenting all changes
involved here in the commit message would be unwieldy.  The changes are
well-documented in the comments in the source, however!
s/ENDL/std::endl/ -- who #defines std::endl??
Update Blockchain::init() for BlockchainDB

Still one or two minor things (filename et al.) to iron out
for this particular change, but mostly there.