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.
I don't think that would be the right thing to do:
1. There are two recursive calls to `_scheduleNextJob()` in `_runNextJob()` and one more call in `schedule()`: `Timer.run()` would have to be added around all three then -- maintainability problem at a minimum.
2. 1) would disturb the sync/async architecture a lot more than this minimal fix does.