Touch gestures

This adds touch gestures using the HammerJS library (http://eightmedia.github.io/hammer.js/)
These code changes allow the use of a swiping gesture to change pages. The library allows for mouse events to be used along with touch events, but this was disabled so it will only work with browsers that have support for touch events.

There are some user experience improvements for Mobile Safari that prevent default touch events (to stop the "overscrolling" or "elastic scrolling" behaviour) this might cause issues when they are needed and needs some more testing, but for now it allows for a much better swiping experience on devices such as the iPad.