Fix race condition that made it possible for N jobs to start simultaneously

@devoncarew
cc @dinhviethoa

This also fixes #2293, the sporadically disappearing "Getting packages..." message upon creation of a new project with some Bower or Pub packages (more pronounced for Bower, because project templates that have Pub dependencies have very few of them).

A candidate to be merged into 0.13.

The bug was that the `_runningJob` "mutex" was set in an asynchronously run `_runNextJob`. So while one job was still getting launched, another job could come, observe the mutex seemingly unlocked, and also start launching.
What I can do is clean up the code and simplify the recursion to X->X from the current X->Y->X. See the follow-up commit.