Added local function intersections() to lib/utils.

It returns the number of intersections as indicated by the ASCII drawing I have
yet to to add. This is a pretty much standard point-in-polygon algorithm if the
result is taken modulo 2.
Added a nice ascii drawing.
Implemented function utils/pointInPolygon().

It went that smoothly because the inside-ness flips with each crossing of a
line segment regardless of whether it's a hole or another polygon.
Removed unneeded parentheses inside intersections().

The spacing emphasizes operator precedence enough.
Removed horizontal lines from counting as intersections.

Unfortunately it is more complicated than that, and the algorithm actually has
to remember if the previous line segment lied above or below the horizontal.
Provided optional arguments to utils/pointInPolygon().

The arguments are an additional point and its known inside-ness. Chances are
that the two points are close to one another, so most of the line segments will
be skipped because of non-intersecting bounding boxes.
Added some explanatory comments.
Reverted to default errors array if no errors are defined.

This way _list/bbox-filter/geojson could also be queried I hope.
Adding spatial relations to _list/bbox-filter.
Added "contains" to options.relation.

This requires a GeoJSON object of type Polygon or MultiPolygon or
GeometryCollection in req.body. A GeometryCollection should of course have
polys in it because anything else will be ignored.
Provided for options.relation and undefined req.body.GeoJSON.

This makes sense because the list function always checks for intersecting
bboxes where I might also need 'contains' and 'within'.
Changed _list/bbox-filter to load lib/utils only if needed.
Changed point-in-polygon checks to restart from center.

My point-in-polygon test is not written in a very secure way: If a point falls
right on a line segment, it may return an inverted value. This avoids that one
screwed up test translates through all the rows following it.
Un-stripped last coord from req.body.GeoJSON.

Because view/geojson always provides stripped polys.
Devised bbox checks for every options.relation.
Simplified query options initialization.
Prevented _list/bbox-filter to parse an "undefined" req.body.

Seriously, whoever decided on "undefined" instead of "null", "{}" or any useful
alternative is the worst person!!!
Fixed some wrong arguments and variable names.
This reverts f7524feaeba1 because no risk no fun!!!
Simplified utils/pointInPolygon().

These relations have been a vector product to check if points are arranged
clockwise. I missed eliminating the difference when I replaced the function
calls with their explicit terms.