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.
Remove cache_id_suffix from the query string of the view lookups.
Cleanup usage of old-style api.
When the 304 response comes in mark all the cached entries with the same
entity tag as fresh.

This allows to completely skip revalidation of subsequent calls to
the same resources sharing this entity tag.