Use Cache-Control: no-cache

With no Last-Modified (see #36) `max-age=0` doesn't make sense
Merge pull request #40 from pnorman/cache_control

Use Cache-Control: no-cache
Respond to HEAD requests

When responding to a HEAD request all the database work is done,
but serialization isn't, saving a bit of CPU.

Fixes #41
Fix logging errors with HEAD requests
Refactor 405 Method Not Allowed handling

Because we need a custom header, we can either special-case 405 errors
in the error handling code or not use the error handler. This does the
latter because 405 errors can only arise early in the request processing
in a couple of places.

Also get rid of the restrictions in the API .cpp files to GET-only.
There's nothing wrong with a HEAD request against the nodes?nodes...
endpoint, and the rails port responds to these.

Overall the HEAD responses are now a lot closer to the rails port.

Fixes #37
Add OPTIONS to 405 response
Move single- and multi-element calls out of experimental
Merge pull request #50 from pnorman/basic_fetch

Move single- and multi-element calls out of experimental
Merge pull request #42 from pnorman/head_request

Head request
Merge pull request #48 from pnorman/405_error

405 errors
Fix tests with `--enable-experimental`.

Tests requiring experimental features have been moved into
separate files, which are conditionally enabled when the configure
flag is passed in.
Move way full and relation full calls out of experimental

To clean-up old files, remove test/*experimental.log
Remove --enable-experimental from ./configure
Use the number of selected ways/relations in full calls

This is a slight optimization for queries against deleted nodes
as it avoids a select, but it is a significant improvement for
backends like pgsnapshot with no history because now no queries are
needed to check for non-existant ways
Fixed error in conversion of instances parameter.

This fixes bugs #54 and #55: If a non-numeric argument is provided
then the error message is:

  Exception: in option 'instances': invalid option value

If the option value is zero or negative, then we get:

  Exception: Number of instances must be strictly positive.

And the `bad_any_cast` exception is gone.
Merge pull request #51 from pnorman/full

Move full calls out of experimental
Merge pull request #53 from pnorman/full_not_found

Use the number of selected ways/relations in full calls
Create a new pgsnapshot backend

This backend is intended for a pgsnapshot database loaded with osmosis.

It supports all non-history calls and passes all openstreetmap-api-testsuite
tests for non-history calls. The most notable history call is the 404 vs 410
error code of single-element fetch calls.

There are not yet unit tests for the backend.
Added very brief test for JSON output.

Note that this only tests one call, so it can't be considered
any sort of comprehensive test - we will need to add more.
Report output mime type from `output_formatter`.

This means we can report the correct type in the HTTP response
header. Note that, at the moment, it's hard-coded to add a UTF-8
charset specifier. This might need to go away in the future, but
is fine shared between JSON and XML, both of which are UTF-8
anyway.