GEOMESA-419 Refactor metadata out of AccumuloDataStore

* Created GeoMesaMetadata trait and Accumulo implementation
* Moved metadata methods into it
* Used concept of key/value store for metadata as String,String instead of Text,String

Note: Used Strings instead of Text for metadata to make it a string,string map of key/values for metadata (seemed more logical and allows for usage of metadata without dealing with storage details).

Main goal was to pull out metadata since AccumuloDataStore was getting too complex and big and was hard to reason about how metadata worked. Wanted to make a simpler Metadata class that was closer to the semantics of a map and hide implementation details. This is halfway there.
should use getMetadataRowKey