memdb: Introduce DB.State method
leveldb: DB.recoverJournal: Allows reuse memdb
table: Writer: Also reset the data block prevKey after pending block handle flushed; just to make sure
leveldb: testing: Make FS-backed storage as the default backend for testStorage
storage: Bring back ReadAt
leveldb: testing: Add TestDb_SingleEntryMemCompaction test
leveldb: testing: Remove TestDb_ModifyingBuffer test

This test is irrelevant since the returned slice are not copied anymore.
iterator: mergedIterator: Assert nil key
leveldb: testing: Decrease WriteBuffer value of some tests

Memdb buffer are preallocated now, set the value too large could cause an issue.
Reported at #37.
opt: Simplify the database options API
table: doc: Explains block 5-bytes trailer
opt: Introduces configurable DB strict level
leveldb: bench: Initialize ro and wo fields with non-nil

Fixes issue #39.
leveldb: compaction: Only finish the last table if it is not empty

Hopefully fix issue #40.
leveldb: compaction: Just assign nil to the `tw` variable and create the table later when needed

It make no sense to create the table right away.

Related to issue #40.
iterator: merged: i.Error() should be iter.Error()
leveldb: compaction: Add missing interator error check
leveldb: compaction: Fix entries that get discarded when source tables can't be opened during compaction

Hopefully fix issue #41.
Merge branch 'master' into marco_merge_upstream20140106