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
I don't know if TEquals happens (except in my unit tests), but that seems to be the only predicate that accepts a Date object (vs a String). I needed it to test handling a Date object in a query correctly, but I can remove it if you think it's unnecessary.