Implement cache abstraction layer

This patch implements a cache abstraction library that can be extended
and supports multiple back-ends.

The patch being submitted defines the library's API and implements a
first in-memory back-end, which is the default one and can be used for
development purposes.

Configuration variables
=======================

The library introduces 1 optional configuration variable:

    * cache_url: The cache url. For example:
        memory://?default_ttl=2

`cache.register_oslo_config` needs to be called explicitly with a
ConfigOpts instance in order to register this parameter. The library can
be used without oslo.config.

Installing back-ends
====================

Back-ends are loaded using stevedore, which means, they most be
installed as entry_points under the `openstack.common.cache.backends`
namespace. See `setup.cfg`.

NOTE: Some of the ideas where taken from Django's cache library and others
from Oslo's memcached module.

Implements blueprint cache-backend-abstraction

Change-Id: Ic2a84ecef949fb28a7d05fe1b2c54ca91da3983c
Merge "Implement cache abstraction layer"