issue #717 #733

@cthrax @zacronos @gitnik @kandizzy @aesnyder 
issue #717 #733

Playing with events.blacklist reveals a lot. Which is making me think twice
about having watches in here at all. (2.1.X may have none) The watch
events from zoom (which happen a ton) really begin to slow down the map
as it goes. IE. Make a bunch of markers keep zooming in and out.. the
tiles and scaling will eventually get crummy. Without the mods to the
scope values its all gravy. So, to have 2.0.X have available speed and
still have a similar API, I will add blacklist watches as well to follow
up commit set / PR.

Events Cleanup
- listeners are tracked and cleaned up on $destroy

Events are exposed via Control #733. They can be removed manually or use
scope.control.removeEvents(listeners)

Center, and Zoom watches

- double checking if the kicked off watch is even relevant by
  checking against its current scope value (not newValue). This is
necessary since the watches are kicked via timeout. Now the bail out
(return in the function) actually happend.
better locks from both directions