Add GetSplitKey for db

The split key can split the database into two parts of nearly equal
size.
Change posix env to support subdir database

When we split the database, we create two sub-directory under
current directory. When we open the two database, no copying is needed
and leveldb will automatically search for parent directory. Note that
the former database should be closed before opening.
Add key range limit

Keys that are out of range will be deleted during compact.
Add a complete test case for splitting