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
Errrmm.... I find this rather confusing...  We can leave it in.  (Maybe add a comment?)

I'm confused about why there are filters which don't match up with ECQL.
scala> val dt = new DateTime
dt: org.joda.time.DateTime = 2014-08-21T19:30:39.290Z

scala> ff.tequals(ff.literal("dtg"), ff.literal(dt.toDate))
res18: org.opengis.filter.temporal.TEquals = org.geotools.filter.temporal.TEqualsImpl@67165172

scala> ECQL.toCQL(res18)
java.lang.UnsupportedOperationException: TheTContains has not an ECQL expression
	at org.geotools.filter.text.ecql.FilterToECQL.ecqlUnsupported(FilterToECQL.java:440)
	at org.geotools.filter.text.ecql.FilterToECQL.visit(FilterToECQL.java:480)
	at org.geotools.filter.temporal.TEqualsImpl.accept(TEqualsImpl.java:38)
	at org.geotools.filter.text.ecql.ECQL.toCQL(ECQL.java:230)