Notes on what needs to be done for non-low-hanging fruit
Updating Blockchain to use BlockchainDB

As this commit is mostly low-hanging fruit as far as refactoring the
blockchain implementation goes, I think each change in this commit
speaks for itself and would be a bit cumbersome to detail here.  I
intend to have at least thorough commenting for the non-low-hanging
fruit changes, and possibly very thorough commit messages to go along
with those changes.
Semantic update to BlockchainDB documentation
Added get_block_difficulty function to BlockchainDB

I see no reason to fetch the cumulative difficulty for two sequential
blocks and subtract them every time one wants the difficulty for a
specific block, so we'll let BlockchainDB implementations handle this.
Added tx_unlocked and get_output{,_global} functions to BlockchainDB

Rather than fetch a transaction to see if it's unlocked, added a
function to BlockchainDB for that, in case at a later time it is decided
to store unlock times outside of transactions for efficiency.

It is necessary to be able to get transaction outputs directly, and
currently those are indexed both by a global "all outputs that exist"
index and by a local "this is the offset for that output in the
transaction it was included in" index.