GEOMESA-101,GEOMESA-130 Performance Enhancements to Iterator Stack For Simple Queries

GEOMMESA-101  Optimize geometry only queries in iterator
    Add an IndexIterator to the iterator stack which is run in place of the SpatioTemporalIntersectingIterator AND the SimpleFeatureFilteringIterator.
    
    The trigger for this action is a query which satisfies the following:
    1) Defines a transform which projects ONLY the geometry and temporal attributes used in the GeoMesa index
    2) Filters on only the geometry and temporal attributes, and can be distilled into the selection of a polygon and interval.
    3) The Density Key in the Query is not set.
    
    If the above requirements are met, the IndexIterator is run and a message indicating such is logged.
    
    GEOMESA-130 Refactor SimpleFeatureFilteringIterator to skip decoding when the ECQL is Filter.INCLUDE
    Add logic to IndexQueryPlanner that removes the SimpleFeatureFilteringIterator from the Iterator stack if:
    1) No transform is defined.
    2) The filter is defined on only the geometry and temporal attributes, and can be distilled into the selection of a polygon and interval.
    3) The DensityIterator is not selected via setting of the DENSITY key in the Query.

I don't believe this is the case. The SimpleFeatureFilteringIterator returns (Key,Value(encodedFeature)) pairs, as does the SpatioTemporalIntersectingIterator and IndexIterator. 

In all cases, IndexSchema.adaptIterator is where the decoding from Values to SimpleFeatures occurs. 

Having said that, it looks like the SimpleFeatureFilteringIterator really returns:
``` scala
new Value(new Value(featureEncoder.encode(newSf)))
```
when a transform is defined. And encode already yields a Value, so it appears that the value is copied TWICE here. This smells wrong.