3705: generalize PullList module to BlockWorkList

Full description at https://arvados.org/issues/3705
Let's add a listener here with a short timeout here to ensure that the NextItem actually does block.

Let's also move that logic to a helper method (expectChannelBlocked) and move this and the above helper methods to a central location so that we can reuse them in other tests (we should make the input types generic channels instead of int channels)