finished implementation using thrift (except for ReadOptions, WriteOptions, Snapshot); all tests now pass