Replace when/sequence with own implementation

`sequence` from `when` does not do the desired behavior when any of the
sequenced tasks are rejected, which is to pass along all the results
gathered up until the point of failure. `when/sequence` only passes
along the result of the failing task in the task queue. We require this
in order to be able to properly kill `buster-server` and `phantomjs` if
either of the two fail during startup, or `buster-test` is rejected due
to test failures.
Fix tests for Node v0.8.x

It seems like a timeout of `0` is a little too eager for Node v0.8.
Probably as the order of timeouts added to the event loop are executed
at random (which is sensible, but doesn't seem to be the case with
0.10.x). The deferred callbacks seem to be called after the test's
asynchronous assertion functions, causing them to break. Seem like
adding a few milliseconds of lag helps the event loop decide on what to
evaluate first.
Merge pull request #26 from busterjs/when-sequence-fix

Replace when/sequence with own implementation. You snooze, you lose. Merging this now so we will have a functional grunt-buster 0.3.1.