GEOMESA-234 using lexicoders for secondary index values

* Using mango lexicoders for primitive types
* Moving some encoding/decoding logic into more consistent locations
* Updating attribute strategies for querying with lexicoders
GEOMESA-326 Refactor QueryStrategyDecider to examine AND children
GEOMESA-234 handling ranges in the attribute strategy
GEOMESA-331 - Attach IndexSchema to SFTs

* Refactored IndexSchemas to be on the SFTs rather than on accessing GeoMesa DataStores.
* Note that in the tests, for MockAccumulo, max shards is 0.
GEOMESA-311,312 Handle spatial-temporal and attribute filters and queries containing multiple attribute filters

Geo & attr gets a StIdxStrategy; attr & geo uses an AttrIdxStrategy. Added
additional filters to test this behavior. (jdk2pq's work)
If multiple attribute filters are indexable, use the first one as index and apply the rest as a filter (hunter-ccri)
In the future, a query optimizer will make more informed strategy decision.
added more tests, verifying that non-indexed temporal first won't automatically result in AttributeIndexStrategy,
another verifying that indexed temporal first will result in AttributeIndexStrategy
GEOMESA-313 Handle Id and * queries

When an ID predicate is present in the ECQL filter, a scan of the record table is performed, optionally with SimpleFeature Filtering,
regardless of the type of the other ECQL predicates.
GEOMESA-245 Allow multiple features to share a (set of) tables

* This pr adds a boolean hint to the UserData in a SFT.
* To share tables, we enforce restrictions on IndexSchemaFormat:
 Schema must start with a sharding partition and a constant string.
* Table code structure has been spun out.  A nascent structure of what it means to be a
 GeoMesa table is shown.
* Attribute like-eligibility has been enforced for the Attribute Index Strategy.
* A rough test for the AttributeIndexJob is provided.