Add 'setImmediate' to JSHint globals
Spread `patterns` over multiple lines to ease disabling one
Refactor resolution propagation, clarify when() behavior

Instead of `Notifier` use a `ResolutionPropagator`. Combined with other changes this makes it easier to understand what the class actually does!

Clarify when() behavior and cleverly use the ResolutionPropagator to handle received thenables, and thenables returned from callbacks.
legendary@0.7.1