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.