Add a timeout to the queue read(1) so queue deadlocks can be detected due to dependency issues or crashed builders that to not notify the master pipe
bulk: Fix silent ignoring of ports that depend on each other.

This is fixed by checking both the ready-to-build pool (pool) and need-to-build pool (deps)
to be empty before considering the bulk done. By doing this, if 2 ports depend on each other
and are all that remain, this will trigger the 'unprocessable queue' assertion and break out.