3705: generalize PullList module to BlockWorkList

Full description at https://arvados.org/issues/3705
This is only ever used to test for nil, so I'd like to see it written as the following to make it clearer to users what we're testing:

````go
expectChannelEmpty(t *testing.T, c <-chan interface{}) {
	select {
	case item := <-c:
		t.Fatalf("Received value (%v) from channel that we expected to be empty", item)
	default:
	}			
}
````

I'm not sure if you saw my comment about stack traces, but you can add them with: