Hg 88 pan/zoom

- pan in media lightbox
- doubltap to set scale to 3
- zoom with pinch
- pan while zooming
- still support swipe to next image, but only when not zooming
This seems to be the heaviest operation. `newX` and `newY` do almost the same but are called separately. This results calling `viewportSize` 4 times, and it accesses DOM 2 each time, which results in total 8 DOM calls for each `panEnd`, I'm not sure if Ember caches `viewportSize` but this part benefit from some optimization.