3705: generalize PullList module to BlockWorkList

Full description at https://arvados.org/issues/3705
Hey, that's really good and much better than my cumbersome code. I've incorporated this but I think it's so concise it works well inline and doesn't need helper functions at all -- let me know what you think.