Serializer cleanup

This PR gets rid of a lot of the exponential proliferation of TileSerializers.

Basic types now exist for all AVRO primitive types, in a generic form.

One weirdness to note: AVRO reads strings as a Utf8 class; I've put in some small hacks to allow us to just use strings in our serializers instead (changing to Utf8 throughout our code would be much more intrusive, and, I think, make the code harder to understand - not to mention introducing an explicit Avro dependence through our code base where it really doesn't belong).