Revert "Revert "Web\Hook: register('grapher')

This reverts commit 65564cda65413bf9ee266d673f48463d07ab7895.

The test was wrong, not the code.
test/Web/Hook: refactor without mocks

Mocks made no sense here. Also introduced a "new" way of naming test
functions. Output now looks as follows:

s\Icinga\Web\Hook
 [x] Knows which hooks are registered
 [x] Correctly handles multiple instances
 [x] Returns null for invalid hooks
 [x] Returns null for failing hook
 [x] Checks whether created instances inherit base classes
 [x] Throws errors for instances not inheriting base classes
 [x] Creates identical instances only once
 [x] Returns an empty array with no registered hook
Use EventEmitter class as a way to delegate events from behaviors to the dom
Web/Response: use & to encode XHR redirection URLs
Web\Hook: remove unused methods
Display current weeks at the beginning of the history grid

fixes #7179
Start history grid weeks at monday

Add configuration option for week-start and set the default to Monday.
Fix month-naming for different week arrangements

fixes #7179
Tell navigation behavior about changes in active menus

fixes #7181
spec: Use application name in install path

refs #6401
Merge branch 'master' into feature/translation-plurals-6982
Implement plural translation (testing)
Implement plural and context based translation functionality

refs #6982