Dynamically add recognizers

Instead of relying on Hammer.defaults.preset we add the recognizers as they are needed.

Since the presets are smartly set in a certain order they can easily depend on each other (or at least any recognizer defined before itself).

Here we can't expect the event listeners to be defined in a certain order, so instead we figure out the dependencies after-the-fact with `updateRecognizeWith`.