Updated Database interface so that rather than CHECKing for certain conditions inside open, put, get, and commit, these functions return a bool indicating whether or not the operation was successful or a failure.  This means the caller is now responsible for error checking.
Updated Database interface to take key and value by const reference for put and key by const reference for put.  Additional copies are made for get and put in the LMDB implementation.
The LevelDB iterator/DB deallocation order bug is pretty much fixed by having each iterator hold a shared pointer to the DB.  I manually specified a deconstructor for the LeveldbState to make it clear what order these two things need to be deallocated in.
Changed Database::buffer_t to Database::key_type and Database::value_type
Added function to Database interface to retrieve keys.  Exposed a bug with LMDB iterators.  Fix the bug and updated how invalid iterators are represented.
Switched some Database logging statements from LOG to DLOG.