Intermediate commit: Main API refactoring.

* Converted all Options classes to Builders.
* Added a Builder and a .builder() method to all KeyValueStores,
  so you can construct them all alike.
* Factored out FileKeyValueStore into FileStoreHelper.
  File-backed stores use this through composition.
* Removed unnecessary getters/setters.
* Added further bounds checking to builders.
* Added a "finalized" state to all non-trivial stores. After you
  open() a store, you can no longer modify it with initFromConf().
* Added singleton instance getters to Empty/UnconfiguredKeyValueStore.
* Updated tests to match new API.
Private store constructors should pull arguments from builders.

This prevents creating constructors with long argument lists.