GEOMESA-364 AvroSimpleFeature Writer

Created a new AvroSimpleFeatureWriter to implement Avro DatumWriter. Changes include:
* AvroSimpleFeature objects no longer have expensive initialization
* SimpleFeatureEncoders now are parameterized by SimpleFeatureType
* LoadingCaches converted to instance variables for type mapping
* AvroSimpleFeatureWriter handles writing instead of AvroSimpleFeature.write() method
* Reuse DirectBinaryEncoder/DirectBinaryDecoder for performance (no buffering) on read/write
* Reuse ByteArrayOutputStreams on write
* Serialization method handles any SimpleFeature type (not just ASF)
* Use cached sft.indexOf() method instead of caching via LoadingCache
Do we need the 'asInstanceOf'?