Fixed unintentionally messed up req.body.keys.
Improved some stupid code fragments.
Changed filter_documents to accept multiple filters.

These will be applied one by one using tail-recursion.
Called filter_documents with spatial filter.

I have to remove 'union' before I can proceed with the spatial stuff and I have
to run documents by _list/tabulate that have been bypassed before; so I don't
see any shortcuts to this.
Simplified inline reset_viewports() a bit.
Employed implicit conversion to reduce inline funcion length.

I see no harm in returning false, but this line is too long!!!
Moved options.GeoJSON to POST data by default.
Removed inline function reset_viewports().

The viewport array will be rebuilt by tail recursion as soon as arguments are
depleted.
This is probably more accurate.

filter_name should nevertheless be correct because it fetches the first
property name.
Added blank spatial filter to filter_documents().

I don't see any way to do this more concisely and it does exactly what it's
supposed to do:
- Handle spatial filters with _list/bbox etc. (this has yet to be written),
- do not merge spatial filters with the rest,
- and if needed, spatial filters are evaluated after the (collapsed) other
  filters are.