Use DOM event delegation for all layers

Adds `Layer` `addInteractiveTarget` and `removeInteractiveTarget` that implements event magic for all layers using delegate events (propagated to map container and handled there in one place). No more mouse event code duplication, and it speeds up adding lots of markers significantly (no need to add tons of listeners on each individual element). Closes #46 

To Do:
- [x] test extensively to make sure nothing is broken
- [ ] figure out how to pass marker latlng instead of mouse position in marker event data
- [ ] add some tests
Hmm, should we introduce an option to Draggable? This is the fix for draggable marker outline. Since we stop propagation of mousedown on draggable, it's not being handled in Map event code.