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.
this is syntactic sugar to make the use of PromiseQueueManager less terse. `managePromiseQueue` is exposed as `promiseLock` as well as `managePromiseQueue`