blockchain_db: factor some exception code

Ideally, the log would go in the exception's ctor, but
two log levels are used, so I'd need to specify the level
in the ctor, which isn't great as it's not really related
to the exception.
blockchain_db: add consts where appropriate
blockchain: add consts where appropriate
checkpoints: add consts where appropriate
blockchain_converter: delete blockchain on succesful exit

While the dtor implementation does not actually do anything, other
paths do delete it, and the dtor might do someting later.
blockchain_storage: add consts where appropriate
blockchain_storage: refactor genesis block creation

The existing assert is kept as it is stricter than the function's
internal assert.
db_lmdb: make cursor internal members private
db_lmdb: do not keep a dangling pointer to stack objects
blockchain: fix wallet syncing from scratch

When the wallet syncs from the first block, it is fine to start
at the genesis block.
Merge pull request #14 from moneromooo-monero/blockchain

Blockchain

lots of const-correctness and more proper code, bug fix with syncing.