Most of the C++ pieces are finished

Almost done with the full design work of the C++ database code.  That
does not include testing, of which there will be quite a bit to do.

I realized that I don't have to rewrite all the blockchain utilities,
I can simply replace the source of the RegisteredTx objects.  I used
to scan the entire blockchain and extract the tx relevant to the wallet,
then use that list of "RegisteredTx" to determine balance and UTXO set.
The DB can technically do both of those operations for us, but here it
can be used only for the first step (extracting RegTx) and then let the
existing BlockUtils code do exactly as it did before.  As long as the
user isn't tracking any SatoshiDice addresses, this should be very
efficient.

This means that a majority of the BlockUtils code can remain the same or
similar, which means that a lot of previously-thoroughly-tested code can
maintain its credibility, since all the tx processing and balance
construction ops are the same as before.  The one thing that will be
changing somewhat dramatically is the way addresses are handled.  We
have changed from "BtcAddress" to "ScrAddress" (script-address), which
is more appropriate for the fact that we're tracking lots of different
kinds of scripts, not just pay-to-hash-of-public-key.  I would've
avoided this change until after the DB upgrade, but the DB upgrade
itself required handling a variety of script types, so it had to be
upgraded at the same time.