[WebBundle] [WIP] Extendable backend menu

Q | A
| --- | ---
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | n/a
| Fixed tickets | n/a
| License | MIT
| Doc PR | n/a

This feature enables to extend the whole backend menu with custom menu entries via [menu builder events](https://github.com/KnpLabs/KnpMenuBundle/blob/master/Resources/doc/events.md).

- [ ] Needs review and feedback
- [ ] Add tests for this feature (need help which)
- [ ] Submit PR for the documentation

Usage:

```php
// src/Acme/ReportsBundle/EventListener/MenuBuilderListener.php
<?php

namespace Acme\ReportsBundle\EventListener;

use Sylius\Bundle\WebBundle\Event\MenuBuilderEvent;

class MenuBuilderListener
{
    public function addBackendMenuItems(MenuBuilderEvent $event)
    {
        $menu = $event->getMenu();

        $menu['sales']->addChild('reports', array(
            'route' => 'acme_reports_index',
            'labelAttributes' => array('icon' => 'glyphicon glyphicon-stats'),
        ))->setLabel('Daily and monthly reports');
    }
}
```

```xml
<!-- src/Acme/ReportsBundle/Resources/config/services.xml -->
<services>
    <service id="acme_reports.menu_builder" class="Acme\ReportsBundle\EventListener\MenuBuilderListener">
        <tag name="kernel.event_listener" event="sylius.menu_builder.backend.main" method="addBackendMenuItems" />
        <tag name="kernel.event_listener" event="sylius.menu_builder.backend.sidebar" method="addBackendMenuItems" />
    </service>
</services>
```