Truncated last coordinate digit in utils/simplify().
Removed empty cuts array from options.

The empty cuts array caused an exception when filter_documents was looking for
cuts[0].remove_me.
Rearranged new_filter.redo to the left.
Factored in distorted latitudes in utils/size().
Removed _spatial/bbox query temporarily.

In case of 5000+ geometries it might be faster to use _list/bbox-filter/bbox
instead of _spatial/bbox, because the latter yields a 1.2MB JSON object for low
zoom levels.
Added zoom and pad to the viewport stack.

zoom is obtained by map.getZoom() and it should tell me if I have to fetch a
different detail level.
pad is a bit more tricky: it touches the most outer border of all the displayed
geometries' bboxes borders directing to the center. So, as soon as pad lies
outside of the viewport, we can assume the same for one or more displayed
geometries.
Initialized new_vp before the callback.

This is merely because of map.getZoom() that needs to be called without any
delay.
This just puts the viewport stuff together.
Calculated viewport.pad.

Gaah it looks messed up but it must be this way: viewport.pad is a bounding box
and therefore pad[0]<=pad[2] and pad[1]<=pad[3]. The bottom-left edge of pad is
assigned to the top-right edge of the bounding boxes that is most bottom-left.
This leaves the options argument unchanged by list().

It was bad bad design in the first place.
WOW WHAT A MESS!!!!