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
GEOMESA-356 adding label for binary format in layer previews
GEOMESA-370, GEOMESA-365, GEOMESA-372, GEOMESA-371,  GEOMESA-380

* excluding imageio, grapht
* excluding jai_imageio
* excluding jgridshift
* excluding jsr305
* including shaded jars in geomesa-assemble
* making accumulo and hadoop provided in tools
* pegging version of jackson
* pegging version of snappy
GEOMESA-379 Making spark-core a provided dependency and excluding javax.servlet
GEOMESA-297 Ingest Command: Allow for Ingesting subset of data columns
GEOMESA-381 Localize TServer classloading trick

* The classloader trick which needs to happen on the tablet servers is broken out.
It should not be run by the GeoMesa GeoServer plugin.
GEOMESA-385 Annotate Return Type of defaultEncoder() Method

Allow Scala to assign to var previously allocated.
Also enabling encoding of byte arrays and fixing style
GEOMESA-382 removing vfs dependency, fixing mock setting for attribute index job
removing not-working mock param for attribute job