Switched to faster Array().pop() when possible.

Even if reverse() is called in some cases, I still end up way faster than to
issue a shift() repeatedly, because reordering the indexes takes a lot of time.
Changed prefix from old_ to last_ where needed.

I always use the last_-prefix to remember stuff from a previous loop iteration.
Changed #union html hierarchy to simplify things.

Now I can for instance safely add a button anywhere in the list item, and the
script doesn't look so by stupid cloning it every time.
Moved content-filter items into a filter-item class.
Added 'perform-spatial-operation' look-and-feel.

It does nothing but looks neat. I also see some self-explanatory power.
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 (as proven by console log):
- Divert spatial filters to _list/bbox etc. (this has yet to be written)
- do not collapse them with the rest,
- and if for instance 'time' is set from 2012 to 2011 and happens to come
  before 'intersects', it'll do the whole filter collapse and apply
  'intersects' after this is done. Because I'd rather apply 'intersects' on the
  smaller geometry set.
This keeps bbox code maintenance low.
Diverted spatial filter to a chain of requests.

Unfortunately it won't get any simpler than that: I need to post to
- _view/geojson to get the geometry to be checked against,
- _bbox-filter/bbox to get get geometries that are considered to be related,
- _bbox-filter/geojson to check considered geometries in full detail.