Templated the key and value types for the Database interface.  The Database is now responsible for serialization.  Refactored the tests so that they reuse the same code for each value type and backend configuration.