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