Added support for additional data types in shapes

This resolves #138 by adding support for additional data types for shapes.  Because GDAL uses 32 bit integers or floats internally for this operation, fewer data types are supported than for rasterize, but it at least includes int16, int32, uint8, uint16, float32.

This updated the internals of _features.pyx::_shapes() to use the newer in-memory raster class introduced in #155.

This also added the GDAL floating point function for shapes, and added support for that through the stack.