[2.0] added a new interface for providers willing to register event listeners

In our quest to decouple service providers from Silex in order to make them reusable in other contexts like non-web contexts (see #352), the first step I propose to do is to add a new interface for providers willing to register event listeners. That way, you can call the `subscribe()` method if you have a dispatcher, and just ignore it otherwise.

The ultimate goal of course is to keep only what is Silex/Web specific in the boot method.

This is (a better) alternative to #836.

If we have a look at the service providers after this PR, the only ones with something in their `boot()` method (2 out of 15) are the following:

 * `Monolog`: calls to `before`, `error`, and `after` (everything is related to the Web)
 * `Security`: mounting of the fake firewall routes (web related)