Animations 2.0 (fractional zoom, pyramid tiles & zoomPanTo)

- **Pyramid tiles** make animations with tiles much more pleasant and open the road for things like `zoomPanTo`.
- **Optimal path animation** (`map.zoomPanTo`) animates smoothly between two locations no matter how distant they are through the shortest zoom-pan curve. #1413
- **Fractional zoom support** for GridLayer makes Leaflet work smoothly with non-rounded zooms like `13.57`, scaling tile layers from round zooms when necessary. #607 #1941 #1309 #1934

![](https://f.cloud.github.com/assets/25395/1965949/2a9441f4-82c1-11e3-9867-b0403f2fd9f7.gif)

#### Pyramid tile loading and animation

- [x] implement basic pyramid loading & animation
- [x] discard zoom levels when not used
- [x] implement pyramid **tile management** so that unnecessary tiles are removed in time for performance

#### Easey-style zoomPanTo (optimal path zoom animations)

- [x] have a basic animation loop through center/zoom values working (without intermediary tiles loading yet)
- [x] implement curved Easey-style zoomPanTo
- [x] add easing other than linear
- [x] tweak zoomPanTo duration and add options
- [ ] make sure events (zoom/zoomstart/zoomend, move/movestart/moveend) are fired correctly during zoomPanTo
- [x] **make zooming animations stoppable** (just like panning)
- [x] fix buggy scroll wheel zooming while zoomPanTo

#### Fractional zoom support

- [x] make fractional zoom working in GridLayer so that it loads tiles from a round zoom and scales the layer with CSS Transform as it would do when animating
- [x] fix fractional zoom wrapping/bounding
- [x] clean up fractional zoom changes
- [x] fix interactions to zoom in/out to the nearest round zoom instead of +/-1
- [ ] add an option to not animate to the nearest round zoom on pinch-zoom on mobile