add initial KML indirect import support

* Add a new KML file format
* Use the geotools kml pull parser
* Generate the feature type from the first feature parsed
* Attributes that prevented postgis import were removed
set kml bounds to empty initially

Setting the initial layer bounds to empty allows us to restore the
bounds computation guard. This will prevent recalculation if we don't
need to do it.
add importer kml test
update attribute handling

Use a new inline vector transformer to implicitly translate the feature
from parse to a feature suitable for load into the database. This
serializes some of the complex attributes to strings for now.
actually set the complex attributes on features

Previously the Region LookAt and Style attributes on features were never
being set. This had to do with the feature type not being prepared
correctly. This commit re-arranges the flow to account for that.
move geometry attribute to first feature attribute

When the geometry wasn't first, the "LookAt" attribute was getting
preferred. Moving the "Geometry" attribute first during transform works
around this.
leave region out of transform

The region is now a LinearRing, which can be saved to postgis directly.
Merge branch 'master' into kml
resolve failing importer test
set folder attribute from user data
add untyped extended data to feature

* copy extended data from feature user data to attributes on feature
* add unit tests for kml file format
beginning typed data support (wip)

typed data test fails
remove style attribute from transform

The current style attribute handling isn't very useful, so just remove
that attribute from the result for the time being.
support multiple items per kml file

Multiple types per kml file also allows us to support multiple schemas,
and better support for typed extended data.
remove style attribute for now

Serializing the style map isn't very useful, so just remove the
attribute for now.
get typeded extended attributes to work
cap layer names at 45 characters

When loading into postgis, the default limit on table/index names is 64
characters. I think this is a compile time setting, but 64 seems to be
the common one used. We prefix a "spatial_" and suffix a "_geometry" to
the name, so we only get 47 chars to work with. And reserving 2 chars
for generating unique names by appending integers leaves us with 45.
support .kmz as a .zip file
metadata flag to trigger bounds recalculation

This is useful because when an empty bounds is set and the user modifies
the layer, it gets set to something other than empty bounds, even though
the user didn't touch the bounds in the ui. This forces recalculation
regardless.
use item layer name instead of feature type

The item layer name is better to use because the user could have
modified the layer before proceeding with the import. Using the feature
type name would have overrided the user's input.