KIJIMR-18. Refactor KeyValueStore APIs.

Reworks the entire KeyValueStore API to be more useable.

* Remove concept of KeyValueArrayStores and entangled implementations.
* Reorganized packages: all key-value-store-related code moved to
  o.k.mapreduce.kvstore.
** APIs in the "kvstore" package
** Client-facing implementations in kvstore.lib.
** Implementation details in kvstore.impl.
* Convert KeyValueStore and KeyValueStoreReader to interfaces.
* Move static methods from KeyValueStore into purpose-built
  classes like KeyValueStoreConfigSerializer, KeyValueStoreConfigValidator.
* Made XmlKeyValueStoreParser work in a standalone lifecycle, removing
  its static class nature.
* Remove NamespaceConfiguration; KeyValueStoreConfiguration directly includes
  this logic.
* 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.
* Make classes final and add annotations.
* Improved constructors and factory methods for API stability.
* KeyValueStoreReaderFactory API contracts made more clear through
  better naming; updated uses of KeyValueStoreReaderFactory.
* InternalKijiContext now closes all KeyValueStoreReaders opened through it
  in its close() method.
* Improved clarity of Javadoc messages throughout.

Signed-off-by: Kiyan Ahmadizadeh <kiyan@wibidata.com>
KIJIMR-14. Gatherer that writes to a Kiji table.

 - Adjusts Job builders:
   - Gatherer job builder customized for HFile outputs.
   - Gatherer has a withConf() to inject a base configuration.
 - Various examples for integration tests.
 - Consolidate configuration keys in KijiConfKeys. Better naming consistency.
 - Update job builder unit-tests.
 - Several integration tests for gatherers.
 - Update JobOutputSpec:
   - location no longer optional.
   - KijiTableMapReduceJobOutput becomes DirectKijiTableMapReduceJobOutput
   - hfile now parses as "hfile:kiji://hbase/kiji/table;hdfs://path/to/hfile@split"
 - Updated job builder unit-tests to use fake HBase instead of mocks.

Signed-off-by: Milo <milo@wibidata.com>
SCHEMA-143. Update to reflect new API.

Signed-off-by: Robert Chu <robert@wibidata.com>