Ability to configure the cache backends

The Client initializes the cache, however there was
no means to pass along configuration settings. This change
introduces `cache_options` which is a dictionary passed
as keyword arguments to the `cache_backend` class.

A downside to this approach is that the rest of
the config can optionally use environment variables.