3705: generalize PullList module to BlockWorkList

Full description at https://arvados.org/issues/3705
True. I'm used to the convention that "AsyncFoobar" designates a Foobar that runs some work in a thread, so you need to be aware of any locking issues around that.... but part of the point of Go's concurrency features are that you shouldn't have to constantly be aware of those things, as long as you've defined your interfaces properly.

So if you're good with `WorkQueue` I'm happy with that. I'm generally happier when things are simpler anyway. :-)