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.
Added transaction- and output-related functionality

Added some functions that the blockchain will want to communicate with
the blockchain storage.
Also fixed a couple minor typos/omissions.
Added convenience typedef to index outputs

outputs are often referred to by their transaction and the index at
which they belong to that transaction.  This commit adds a typedef to
refer to such a pair <hash,index> consistently.
Blockchain::scan_outputkeys_for_indexes changed to use BlockchainDB
m_blocks.size() --> m_db->height()