KIJIMR-18: Refactor KeyValueStore API

Performed the following operations:

* (ok) eliminate all references to array stores
* (ok) separate into framework, lib, impl packages
* (ok) KeyValueStore and KeyValueStoreReader should both be interfaces
* (ok) Remove NamespaceConfiguration and just make it KVStoreConfig
* (ok) eliminted all referencers to InterruptedException.
* (ok) convert options to builders; make it more obvious how to get the
  right kind of Builder instance back.
* (ok) Pull out FileKeyValueStore from the hierarchy and include it via composition.
* (ok) Add "finalized" state to the system: after a KVStoreReader has been
  pulled from the kvstore, it's immutable.
* (ok) All store ctors should pull from builders, not have expanding args.
* (ok) add correct annotations
* (ok) make all classes final if they can be.
* (ok) review ctors and static factory methods.
* (ok) full review of api adaptability issues:
* (ok) KeyValueStoreReaderFactory API should be considered more carefully.
* (ok) pass over all javadoc.
* (ok) bug: KeyValueStoreReaderFactory.close() is not called in InternalKijiContext.close().
* (ok) kvstore package-info
* (ok) kvstore.lib package-info.
* (ok) make file storage public


There are several commits on this branch. They should all be squashed and given a common commit message for the final push.

Each commit should independently succeed with 'mvn verify'.