GEOMESA-287,GEOMESA-303 Handle transformations in command line export Investigate export behavior when exporting with -a id

To test this PR, sample commands can be found at https://geomesa.atlassian.net/browse/GEOMESA-287.
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
GEOMESA-346 removing hsql epsg for hard-coded 4326
GEOMESA-451 GeoMesa shell should allow for sharing tables

* Adds flags to the command line for table sharing.
* Addresses classpath issues for MapReduce ingest and attribute index job.
GEOMESA-432 Improved GeoMesa Tools script

This PR addresses some usability issues with the geomesa shell script. Now environment variables
for hadoop and accumulo can be optionally set, and individual paths can be overridden by the user.
Also more informative messages are printed when certain variables are not set.

GEOMESA_HOME and GEOMESA_LIB are now set in function calls, "configure" still works and now should
print out what needs to be added to persist the configuration.
GEOMESA-456 Fixing WMS TIME parameters
GEOMESA-417 unique attribute process

* added WPS process to retrieve unique attributes
* cleaned up and standardized explain query output
* fixed typo in minicluster README, moved minicluster logs into logs/ folder
* adding option to sort by count
GEOMESA-424 cql 'OR' filter query does not deduplicate

* moved deduplication code into QueryPlanner.getIterator method and used it for both duplicatable data and OR queries
* refactoring to be a bit more selective
* added inclusion-exclusion test to AccumuloDataStoreTest
GEOMESA-458 Default geom field can have index=false

* Default geometry now always gets index set to true
GEOMESA-455 Add caching as an optional param to data stores

* Adds a caching param to data store constructor
* If caching param is toggled, then requests to getCount and getFeatures
  will cache resulting feature collection in AccumuloFeatureSource
GEOMESA-457 Optimize sorting of results

* Sorts results based on SortBy parameters
GEOMESA-428 checking for SRS when determining axis order in binary output format

* adding default dtg from schema if not specified in request
* ensuring 24 byte encodings all are 24 bytes
[maven-release-plugin] prepare release geomesa-accumulo1.5-1.0.0-rc.1
[maven-release-plugin] prepare for next development iteration
GEOMESA-449 adding support for lists and maps in simple feature attributes

* Using SimpleFeatureTypes.createType(), you can specify a list or map:
    * names:List[String]:index=true
    * weights:Map[String][Double]:index=false

* Attribute values will be instances of java.util.List or java.util.Map when retrieved

* Lists can be queried through CQL which will execute against the individual items in the list
    * Can use standard comparison operators
    * Given the attribute names=List('bill', 'bob', 'henry') =>
        * (names = 'bob') will match
        * (names < 'joe') will match
        * (names > 'joe') will match
        * (names > 'mark') will not match

* Maps can not be queried, but can be stored and retrieved
GEOMESA-459 CloseableIterator cannot close

resolved error in CI.empty; implemented tests for CI.empty
GEOMESA-453 ClosableIterator flatMap may end prematurely

refactored ciFlatMap method to use an internal tail-recursive helper, and added a test that smashes the stack with the old code.
GEOMESA-469 Use scala's parser combinators to parse simple feature type specs in SimpleFeatureTypes

SimpleFeatureType specs are parsed using proper parser combinators.  The format of
Map[A][B] has been changed to Map[A,B] and type encoding code has been collected in
SimpleFeatureTypes
GEOMESA-444 Implement TimeSnap class