mojo: Further refinement to major build loop.
The biggest change is that if we know that we will stop building, we
only need to wait for the update jobs to finish, we don't need to make
new build promises just to manually reject them.
This also helps simplify some of the remaining poor code. While I was
at it I removed the unacknowledged module stuff, which is no longer
needed.