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
This is actually more than cancelable now. As I am wrapping promise with a few things.

Basically we are adding 3 things to a promise
- notify : function
- cancel : function 
- promiseType - gets added if the incoming promise has a promiseType (another extension to give promises purpose)