Event handling cleanup

I've switched the event handling in our views to use listenTo() so that the events get unbound when view.remove() is called. A superview will now clean up its subviews too.

The bad news is that compared to the events left behind by Leaflet, this is a drop in the ocean. :-)

There's a map.remove() function coming in the next version of Leaflet which should solve these problems.