Added abstract CORS configuration

This pull request makes the CORS configuration abstract and extensible.

## Detailled description
Configuration providers can be implemented based on `Options\ProviderInterface`, and registered as such using the `nelmio_cors.options_provider` service tag:

```yaml
services:
    my.cors_options_provider:
        class: My\CorsOptionsProvider
        tags:
            - { name: nelmio_cors.options_provider }
```

The tag has an optional 'priority' attribute that defaults to 0.

Providers will, through the `getOptions()` interface method, return CORS options based on an HTTP Request. The hash may contain any of the cors options keys, as defined in the bundle's documentation (`allow_methods`, `allow_headers`...).

## Backward compatibility
The existing, semantic, CORS configuration is implemented in a `Options\ConfigProvider`. It has a priority of -1, and is registered by default.

Without any custom provider, the behavior is unchanged.

## Real-life example
ezsystems/ezpublish-kernel#663 uses a custom provider that matches the requested path against the router, and returns the registered REST routes.

It provides `allow_methods` and `expose_headers` options. All other options use the default semantic config, as can be seen in ezsystems/ezpublish-community#89.

## Testing
All submitted code should have a coverage of about 100%, and is used in the pull-requests linked above.