-:
introduce build queue

this fixes triggering of redundant builds, which previously would always
happen when a job with N inputs had more than one change at a time.

now, upon noticing a new version to build, it is enqueued, where it sits for
a grace period as more inputs are collected. this reduces N builds to 1 per 10
seconds.

additionally, manually triggering builds is done in terms of this. if a build
is already waiting to run, it will be preempted and started immediately with
whatever inputs it collected. if not, a build will just be started with no
specified versions as before.