[Feature] Response caching

**This is "mergeable", but careful merge planning is desired to test deployment**

- [x] Test more with shorter timeouts
- [x] See if stale responses can be used in the case of a timeout
- [x] Tests for 5xx responses serving cached responses

Provides default response caching functionality. Out of the box, the client configures ArrayCache, so most likely a persistent adapter would be used instead. As an example, a project using this library could provide the following config:

```php
<?php
use Guzzle\Cache\DoctrineCacheAdapter;
use Guzzle\Plugin\Cache\DefaultCacheStorage;
use Doctrine\Common\Cache\RedisCache;

// ...

$cacheDriver = new RedisCache();
$cacheDriver->setRedis($redis);

$client = new OoyalaClient(array(
    'api_key'      => '123',
    'api_secret'   => '456',
    'ooyala.cache' => array(
        'max-age' => 300,
        'stale-if-error' => 3600,
        'plugin' => array(
            'storage' => new DefaultCacheStorage(
                new DoctrineCacheAdapter($cacheDriver)
            ),
        ),
    )
));
```

By default caching is disabled. As you can see in the tests, just configuring `ooyala.cache` will set up the defaults (the storage part is not super-useful with the defaults):

```php
new OoyalaClient(array(
    'api_key'      => '123',
    'api_secret'   => '456',
    'ooyala.cache' => true,
));
```

I am having difficulties getting Ooyala responses to send back [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html) compliant headers, so a custom "can_cache" and SkipRevalidation are used by default to enable the caching of responses. Currently the best way to "bust" cache is sending a `max-age` of `0` from a command.