added Application::subscribe() to register an event subscriber from the app

This PR purpose is two-fold:

 * it makes registering an event subscriber as easy as registering an event listener (`on()` vs `subscribe()`).
 * it abstracts the `dispatcher` service in service provider `boot()` method, which is the first step towards decoupling the service providers from Silex (see #352).