Introduce KernelServiceProvider in order to "hacks"

This introduces a new KernelServiceProvider that is auto registered
by Silex\Application.

The main reason for including this is to remove the ugly
"dispatcher_class" hack we used to have. But since we introduced a
seperate interface for listeners to use for subscribing we can just have
a nice normal service.
I'm not 100% sure when subscribe is called, but I would be careful here, as the laziness and ordering of calls is important.