issue #979 RaceCondition Nailed

@zacronos @kandizzy @gitnik @cthrax 
I will get to commenting on the PR in a few minutes. This is 3 days worth of work and a whole Sunday of thinking about it.

Everything is based of discussion and ideas @aesnyder and I had on canceling promises.

Seriously complicated PR, and I plan on doing a hangout with @aesnyder and with anyone who cares

Side Notes:

I have tested this on a product and it appears to be solid. I am getting no duplications on markers whatsoever. I still seem to get artifacts on polygons, however this is only on my application and it does not occur with markers (same app). Therefore I think it may be duplicate data in the database for my polys. 

I can not get artifacts to happen on the issue-979-polygons-race or issue-979-polylines-race examples. Same goes for #904, and #621 examples.
Because it is using watch collection. If watch colleciton supports tracking the array to length = 0 then it should be fine. But watch collection is way less overhead. This entire argument will go away when we stop using watches.