Improved the README a bit because I am bored.
Added experimental _spatial/bbox for the GeoCouch extension.

I emitted a dummy geometry rather than the actual GeoJSON to minimize the size
of each row. 'coordinats: ""' works, and it is smaller than 'coordinates:
"undefined"', to which the plugin would default if none are given.
Changed map page to check for the GeoCouch extension.

Don't know what to do with the spatial info right now, so I ignored it.
Moved list callback into local function success().
Draft of a query to _spatal/bbox if GeoCouch is installed.

_spatial/_list doesn't allow POST, so there is no way to sieve matching
geometries by a list of document ids, (as it is done in
_list/bbox-filter/bbox), because I can only send something like 200 keys to
_spatial/_list in a GET request.
The bottom line is that I'll end up with a query for ALL ids (which is
disgusting). To make it less painful, I excluded the geometry errors from
_spatial/bbox because I'd have to transmit and JSON.parse all of them seems,
even if only 50 are needed.
Geometry keys that intersect with my viewport are sent to a 2nd query to
_list/bbox-filter/bbox, but in this case with only options.error set. That
allows me to reuse the success function.
Concise-ified a bunch of lines because I am bored.
This improves loop performance a tiny bit.

Switched from options.keys to KEYS (horrible) and in this version the
comparison of KEYS.length with options.limit only occurs if KEYS.length has
changed.
Added a bit of explanation for GeoCouch query mode.

Because I am still bored. Nothing to do now but sit and wait and read blogs in
the internet and wait for more paychecks. Awesome!!!
Wrote some comments for each map/reduce function.
Enhanced control-flow comprehensiveness in some map/reduce functions.

Wow this must look like serious work!!
Moved _list/bbox-filter/bbox callback into named function.
Deleted redundant initialization of 'keys'.

It so happend that there was a 'global' (i.e. most outer function scoped)
variable that is also named 'keys' and whose content is EXACTLY THE SAME!!
I copied it selectively into a local 'ids' array.
Boy I have to do something about these stupid global names, they're gonna stab
me in the back some day.
This improves loop performance and removes clutter.
Changed initialization to build hash table destructively.
This partially reverts commit 54269f4cd8710.

Turns out that 'keys' is not always as initialized as I want it to, so I was
right in the first place. 'ids' is still a better name, though.
Pre-filtered geometries with _spatial/bbox for spatial relations.

This is similar to how it's implemented in update_items(): All matching ids are
hashed for faster look-up, and in a second step, options.keys are run by that
hash-table.
_list/bbox-filter still needs to be queried twice, because _spatial/bbox
returns intersecting bounding boxes. It shouldn't hurt to further reduce these
to contains/within before running the extensive point-in-polygon query.
Added a bit about GeoCouch in the README.

As long as /_plugins doesn't work in Windows, I can't provide a nice GeoCouch
installer. This should be fixed in 1.6.2 or something.