Vectors 2.0

Major rewrite of Leaflet vector layers, #155. The goal is to refactor vector layers code in Leaflet to make it possible to switch between rendering backends (Canvas, SVG, etc.) dynamically, have more than one physical pane for vector layers for advanced stuff (layering etc.), get rid of ugly hacks, and make the code much cleaner and more transparent. 

Another nice additions include massive performance boost for Canvas layers (in cases like updating shape style on hover), retina support for Canvas, proper MultiPoly implementations (one path with several rings instead of `FeatureGroup`-based), poly `getCenter` that returns proper centroids and is used by `path.openPopup` and much faster (cached) poly `getBounds`.

This also potentially opens it up for interesting future extensions, like custom shapes, indexing layers with RBush for fast interaction features, etc.

- [x] `Renderer` — extends `Layer`, handles positioning, bounds and zoom animation for an SVG/VML/Canvas root
- [x] `SVG` — extends `Renderer`, adds SVG root and handles generic SVG stuff (elements, styles, events, etc.)
- [x] `SVG` multidimentional points to SVG paths for polygons/polylines/multipoly
- [x] `SVG` point/radius into SVG circle path
- [x] `SVG` mouse events
- [x] `SVG` `brintToBack`/`bringToFront`
- [x] `SVG.VML` — patches SVG with VML-specific code (since other code is pretty similar)
- [x] `Canvas` — extends Renderer, adds Canvas root and handles generic Canvas stuff
- [x] `Canvas` drawing polylines/polygons/multipoly from multidimensional points on canvas
- [x] `Canvas` drawing circles from point/radius on canvas
- [x] `Canvas` mouse events
- [x] `Path` — extends `Layer`, base class for all vector layers (without renderer-specific code)
- [x] `Path` popup methods 
- [x] `Polyline` — extends `Path`, projects/clips/simplifies latlngs, delegates drawing to renderer
- [x] `Polyline` `closestLayerPoint`
- [x] `Polygon` — extends `Polyline`, clips polygon latlngs, delegates drawing to renderer
- [x] ~~`MultiPolyline` — turned out to be unnecessary~~
- [x] ~~`MultiPolygon` — turned out to be unnecessary~~
- [x] test for input to polys with various rings
- [x] `toGeoJSON` for polylines/polygons/multipolys
- [x] `Rectangle` — extends `Polygon`
- [x] `CircleMarker` — extends `Path`, delegates drawing to renderer
- [x] `Circle` — extends `Path`, scales radius, delegates drawing to renderer
- [x] Retina support for Canvas
- [x] ~~`Canvas` `brintToBack`/`bringToFront`~~ not currently possible because of how events work
- [x] centroids and proper `openPopup` for polylines/polygons/multipolys?
- [x] proper poly `getBounds` that takes rings into account
- [x] optimize Canvas mouse events performance
- [x] test in IE
- [x] go through code and add some comments
- [ ] update changelog with the changes
- [ ] start an upgrading guide for 0.8