EZP-20071: HttpCache should Vary on the user hash

**[Specification document](https://github.com/lolautruche/ezpublish-kernel/blob/d8beea1d38f03c76c31ea6d7181b0036e9d89d2c/doc/specifications/cache/context_aware_http_cache.md)**

This pull-request implements a way to insert the user hash into the request so that the HttpCache can vary on it, making cache shareable like it was in legacy.

This implies to be able to generate a **user hash** and make this generation extensible.

Please also review related PRs:
* https://github.com/ezsystems/DemoBundle/pull/11
* https://github.com/ezsystems/ezpublish-community/pull/65

## Tasks

* [x] Implement a basic user hash generator
* [x] Make the hash generator fully extensible
* [x] Implement a basic usage in ViewController
* [x] Remove the UserService hack and use repository `sudo()` instead.
* [x] Find a way to correctly *cache* the user hash at the user level so that retrieving it does not have too much impact on performance (implies to be able to reset this *cache* when user logs in/out)
* [x] Publish specification document
* [x] Unit tests :smiley: