Expose the database query model api for fetching the values of a field
for some query.
Fix gateway GET forms not to put empty values of optional fields into the
query string.
Add descriptive error messages to connection errors produced by
feat http client.
Support cancelling connection triggered by httpclient through
the Deferred.cancel() call.

Render nice error message when this happens.
Produce a nice cancellation message when the request is cancelled at the
stage of waiting for the server to respond.
Fix the behaviour of http client failing with the timeout when waiting
for response.
Fixes to unit tests of http protocol.
Add extensive tests for error conditions and Deferred cancelation effects
for the httpclient.
Make it possible for the application section of feats config to add paths
to the pythonpath.
Make "feat-service upgrade" create the database if needed.
Fix typo preventing the view from being rotate on upgrade.
Make db connection client remember for which documents it already had triggered
the asynchronous upgrade hooks, thus reduce the number of conflicts later.
query.value() can now return only unique values or all of them.
Simplify internal api used by couchdb driver.
Remove obsolete param, improve error messages.
Introduce a simple http cache relying on HTTP ETag headers returned by
couchdb.

Done:
* Integrated with doing requests
* All tests are passing

TODO:
* Put the parsed result of the view inside the cache
  (not only json structure)
* Expose internal state of cache using model api
* Remove Cache defined in feat.database.query module, simplify
  the query procedure since caching will be in charge of the driver.
* Experiment on memory load.
Generalize the idea of cache used by couchdb connection.

* Make it used only if explicitely requested.
* Use it for some of idempotent POSTs performed (bulk get, view queries)
* Make it possible to specify special parsers for the response. This is
  used upon the view query so that the end result (list of tuples) is cached
Expose state of database connection and cache via feat gateway.
Implement a strategy of removing cached entries.

* Assume some desired size of cache (default 10MB).
* Run a cleanup every 10 minutes.
* Expire entries which are least used (defined by time density of usages).
* Groom the cache to drop the size below the limit.
* Warn in case the average size exceeds 3 times the desired limit.
Implement passing defining extra steps of result parsing. The final result
is what ends up cached in the http cache.
Refactor database query mechanism to use builtin cache of the database
driver, rather than its own cache.