Moving the user context logic out of the kernel inheritance hierarchy.

fix #170

This is just a rough sketch but as we talk about other cache kernel features i wanted to show how this can look.

In fact, what we probably want is kind of an event handler for the kernel at this point. This should not get too complicated, but maybe just have a list of kernel "extensions" (bad name, its already used for the bundle config handler class) and call each in turn during handle. The setup would then be:

```
$kernel = new HttpCache($kernel);
$kernel->addSubscriber(new UserContextSubscriber());
$kernel->addSubscriber(new PurgeSubscriber());
$kernel->registerSubscriber(new BanSubscriber());
```

**TODO**
* [ ] Adjust documentation
The removal of these constants is a BC break, given that this feature has already been released.

For BC reasons, we need to keep the constants (and keep the features allowing to extend the class and overwriting the constants to change the values).
If you rewrite the listener to rely on options passed to the constructor, the BC layer is easy to do: it is simply a matter of passing the options explicitly when instantiating it in the cache kernel based on constants