Add basic infrastructure for interface tests.

This is simply at start at providing generic interface tests.  The only
thing is tests so far is the empty database conditions on NewestSha, but
it adds infrastructure for creating and opening databases with special
type handling based on the database and necessary logic to teardown so
multiple backends can be tested simultaneously.

This and the next series of commits all discussed with drahn@.
Add loadBlocks infrastructure to interface tests.
Add interface test for adding a duplicate driver.

This commit adds an interface test to ensure that attempting to add a
duplicate driver for a given database type does not overwrite an existing
one.
Add interface test for create and open failures.

This commit adds an interface test to ensure that failures which occur
while creating or opening a database are properly handled.
Add interface test for unsupported dbtype failures.

This commit adds an interface test to ensure that the interface returns
the expected error when trying to open or create an unsupported database
type.
Start interface tests that require state.
Move non-interface specific tests into db_test.go.

The idea here is that interface_test.go will be directly usable in each
implementation to increase test coverage there as well, but also works at
the  top-most level to test arbitrary backends.
Add interface test for FetchBlockBySha.

This commit adds an interface test for FetchBlockBySha to ensure it
returns the same MsgBlock and raw bytes that were inserted.
Improve error message for FetchBlockBySha test.wq
Add interface test for FetchBlockShaByHeight.

This commit adds an interface test for FetchBlockShaByHeight to ensure it
returns the same expected hash for each block inserted block height.
Add db type to test error outputs.
Add negative tests for FetchBlockShaByHeight.

This commit adds tests to ensure FetchBlockShaByHeight returns expected
errors when invalid heights are specified.
Add interface test for ExistsTxSha.

This commit adds an interface test for ExistsTxSha to ensure all
transactions inserted as a part of a block are available.
Add interface test for FetchTxBySha.

This commit adds an interface test for FetchTxBySha to ensure it returns
the same MsgTx that was part of an inserted block.
Separate interface tests and add test context.

Rather than having one mammoth interface test function, create a test
context and several helper functions that accept the context.