GEOMESA-583 Adding customized encoding/decoding for index entries

* Replacing IndexEntry encode/decode with IndexValueEncoder
* Adding ability to specify attributes to encode in st index value to SimpleFeatureTypes, SftBuilder
* Selecting index iterator in the case of a transform covered by the custom index value
* Improving method profiling
Ok, it took me a second here.  

All of this seems reasonable, but I'm wondering if it should/could be somewhere more general than IndexValueEncoder.  Also, I agree with @cne1x's comment about type classes.  It'd be good to get John's opinion.