[WIP] accept header based selection of the controller

Essentially the approach here is to register a listener after the core ``RouterListener`` that tries to map the controller based on the media type. The media type map is configured inside the route.

Example route:

```yaml
hello_version:
    pattern:  /liip/version
    defaults:
        _controller_map:
            fallback: '1.0'
            config:
                '1.0': 'liip_hello.world.controller:v1Action'
                '2.0': 'liip_hello.world.controller:v2Action'
        _format: json
```

Todos:
 - [ ] don't really like the MediaType* naming. we already have a MimeTypeListener
 - [ ] make it possible to configure a different mapper, should it be possible to configure mappers via the route definition? if so if we support services, we would need a factory that has access to the DIC
 - [ ] integrate with the routing generation
 - [ ] make it possible to configure version ranges in the default mapper (lift code from https://github.com/composer/composer/blob/master/src/Composer/Package/Version/VersionParser.php or https://github.com/vierbergenlars/php-semver)
 - [ ] potentially support a default config by defining some naming convention (potentially allow to configure one naming convention that uses a different controller and another one that uses a different method) so that not all routes need to have an actual ``_controller_map`` defined (instead one can just use ``true`` to enable the feature)
 - [ ] add tests

@newloki: if you have time to work on any of the above items please let me know via a comment in this ticket.