GEOMESA-449 adding support for lists and maps in simple feature attributes

* Using SimpleFeatureTypes.createType(), you can specify a list or map:
    * names:List[String]:index=true
    * weights:Map[String][Double]:index=false

* Attribute values will be instances of java.util.List or java.util.Map when retrieved

* Lists can be queried through CQL which will execute against the individual items in the list
    * Can use standard comparison operators
    * Given the attribute names=List('bill', 'bob', 'henry') =>
        * (names = 'bob') will match
        * (names < 'joe') will match
        * (names > 'joe') will match
        * (names > 'mark') will not match

* Maps can not be queried, but can be stored and retrieved
I am matching the geotools behavior, which essentially does a 'contains' clause for lists. So each row in the attribute index is a single element in the list. I briefly toyed with encoding the rest of the list as well, but it would have caused a lot of special handling code in the rest of the attribute index stack.
The downside is that an attribute-only query against a list will still have to join the record table, instead of using the AttributeIndexOnlyIterator - but i'm not sure that is a common query. I can open up a ticket to support that functionality if you want.