Cleaned up comments a little and removed keys from inital query.
_list/bbox-filter should also work with no data.
Fixed bad commit d73e7c20555d (the 'error' propery was missing).
Made error argument of update_geometry() optional.

It still needs to be defined when first used because map.getBounds() isn't
there yet.
Provided a brief interface for event handler callback reduction.

For instance a 'bounds_changed' is fired every 25ms or so if the user scrolls
the map. Ajax'es are likely to be stacked upon another and mess up shared
variables. The 'call' object is actually just a two-element list describing
what is done just now and what should be done next. So if there is a
'bounds_changed' while an Ajax is in progress, we just stage another Ajax that
is called as soon as the first one is finished. The deliberately stupid wording
emphasizes the design.