Allow custom cache objects using callback modules

This patch allows custom objects derived from design documents to be
exposed in the ddoc_cache. A custom object is defined by a module
exporting the recover/1 function which accepts the name of a database
and returns {ok, term()}. The term will be cached as if it were a design
doc. For the sake of simplicity all custom cache objects associated with
a database are evicted when any ddoc in the database changes.

Once a custom callback module has been defined the object associated
with the module can be retrieved via ddoc_cache:open(DbName, Mod).

BugzID: 42707
Merge pull request #6 from cloudant/42707-custom-cache-objects

Allow custom cache objects using callback modules

BugzID: 42707
Add tests to ddoc_cache_opener

Tests demonstrating a design problem when flooded message queue
leads to a delayed cache response, which in result could
lead to further queue grows on the new ddoc requests.
[WIP] - Move ddoc retrieval to own process pool
[WIP] - Remove the parts of an old ddoc retreive functionality
Change utest to work with new retriever
Grammar nazi raid on the test's description
Read LRU options from the couch config

LRU options now read from the couch config, like the rest of the world
and not from ddoc_cache app's env.

The opts could be specified in default.oni as the following:

    [ddoc_cache]
    max_objects = 50000
    max_size = 104857600
    max_lifetime = 60000

The defaults are 100 Mb for the max size of an object in the cache,
one minute for an object's expiration time and no limit on a number
of the objects in the cache.
Don't inclide the benchmark tests into the repo
Rename 'refresher' to 'fetcher'
Make fetcher to cleanup supervisor's specs after itself

The benchmarks show that leaving children's specs in supervisor
is no-go as an invocation time for a new children grows as O(n)
Use `list` for a list of the clients instead of `queue`
Pass the exceptions from ddoc recover to fetcher's worker

Trap exit of ddoc recover to pass its error, exceptions or exit
message to the callers with abnormal exit of the fetch worker
Start the workers in `ddoc_cache_sup` in correct order
Catch a recover's response from the custom cache objects
Revert .gitignore, just keep benchmark on a separate branch