L.Control.Layers: 'overlayadd' and 'overlayremove' event should also fire on external overlay changes.
External baselayer changes should fire 'baselayerchange' instead of 'overlayadd'
'baselayerchange' event should fire with layer name(use object in _layers of L.Control.Layers) instead of only layer.
Check object when LatLngBounds extend

When LatLngBounds extend, must check the extending object, because empty marker `L.marker().getLatLng()` got `undefined` and `obj[0]` got `TypeError`
Update LatLngBoundsSpec.js
Merge pull request #1688 from korzhyk/master

TypeError prevention on LatLngBounds extend
add mailmap to gitignore
Prevent infinite loop in adding of canvas CircleMarkers
update packages versions, minor jshinting
update build
Merge pull request #1713 from snkashis/circlemarker_loop

Prevent infinite loop in adding of canvas CircleMarkers
Prevent memory leak in removal of canvas layers
Merge pull request #1723 from snkashis/canvas_removals

Prevent memory leak in removal of canvas layers
Add a test that shows the DOM change failure

The icon should switch from blue to red and back, but does not in IE
because the DOMelement has disappeared, as in issue #561. Instead, the
mouseover event is fired on any mouse motion in the marker. In addition,
in FF & Chrome the mouseover and mouseout events are continously fired
on any movement, which gives the correct visual results but causes
a lot of superflous event handling.
Reuse DOM object in Marker.SetIcon, fixes #561

If there already exists a DOM object for this marker, reuse it by setting
a new src and style rather than creating a new one.
Make test/example actually check ondragstart/end
Fix indentation
Don't call Layer#onRemove if Layer#onAdd was never called
Don't call Layer#onAdd on a layer that has been removed
Don't fire layerremove if layeradd was never fired
Fix trailing whitespace