Trigger popupopen/close on markers too.
Add tile bounds option to limit tile loading to a given region
radius is part of CircleMarker style so should be changeable in using
setStyle();
Allow pointer-events to be set via options passed to shape
fixed bug where wms tilesize option was ignored when setting
 wms params width and height
Rename TileLayer.options.tileBounds to bounds
Better parameter handling for TileLayer bounds
GeoJSON GeometryCollection passes consisent params to pointToLayer
Use proper factory call for bounds option
store the event listeners using a hash if the context have a leaflet_id.

When removing a layer,the slowest part was to remove the event from the map.  For each event, the removeEventListener method had to loop the whole list.  With thousand of layers, it become very slow to do.  With a hash used has an index to find event listeners for a given leaflet id, its no more an issue.
Path CANVAS adds a click event if clickable but do not clear it on remove.  This adds the necessary remove listener.
use a property for index length because its slow to get the first property or get the length of a hash.
code convention
Use [semantic linebreaks](http://rhodesmill.org/brandon/2012/one-sentence-per-line/)
use semantic linebreaks also in CONTRIBUTING.md
Merge pull request #1148 from waldir/patch-3

Use "semantic linebreaks"
Sort of working Draggable support for touch+mouse devices.
Get doubleclick on touch&mouse devices working. We need to add a touch doubletap emulator and a normal doubleclick listener
Always enable scrollWheelZoom (fixes scroll wheel zoom on mouse+touch devices)
Only wire move/end listeners for the thing we want to listen to.

Stops potential bug:
User touches on device, user moves mouse. These mouse move events would have panned the map, now they won't.