Initial support for Spatial Views

Spatial Views (like GeoCouch) are not support via the HTTP
and local adapter. Multidimensional queries are supported.

The key of the `emit()` function can be used in three different
ways.

 1. A GeoJSON geometry, the bounding box (ranges) will automatically
    calculated. For the queries, it is then a 2-dimensional index.
 2. An array with values. Every value corresponds to one dimension.
    The value can either be a single number, or an array, which
    represends the bounds of a range
 3. An array with values (just like 2.), but the first value
    is a GeoJSON geometry. In this case the bounding box of it
    will be automatically calculated (just like 1.). This means
    that the first two dimensions represent the bounding box of
    that geometry.

The possible query parameters are:

 - `start_range`: An array which contains the lower bound value
   for every dimension
 - `end_range`: An array which contains the upport bound value
   for every dimension
Support for storing geometries

It is now also possible to store geometries. They need to be the
first item in the array of the key (it also works if only a geometry
is supplied as key).