Pinch to zoom [WIP]

This PR implements pinch to zoom functionality as described in #2582.

Things left to do:

- [ ] Tweak pinch to zoom to make it more fluent/stable.
- [ ] Fix the issue that the page always jumps to the top left side and not to the part that was pinched.
- [ ] Make pinch to zoom work on Chrome. (Turns out that Chrome for Android crashes above 170%, probably also causing most of the problems with my implementation. Tracking at #3799. The rest of the implementation appears to be working on Chrome for Android!)
- [ ] Make sure Hammer.js license (see https://github.com/EightMedia/hammer.js and the commit file) is not a problem. Also make sure that the file in the external folder will be used in the add-on version as well (not sure if an include from the external folder will be used everywhere).
- [ ] Test on different platforms (tablet, mobile, desktop with trackpad) and on different browsers/OS's.