Adding support for user context for symfony HttpCache

Moving most of https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/issues/177 to the library.

*TODO*
* [ ] Documentation (see also https://github.com/FriendsOfSymfony/FOSHttpCacheBundle/issues/178 but note that things changed since then)
Wrong order.
Should be the following (opposite of `array_merge()`)

```php
$this->options = $options + array(
    'default' => 'value'
)
```