3705: generalize PullList module to BlockWorkList

Full description at https://arvados.org/issues/3705
I think the return type should be Value, not list.Element.

If we return a list.Element to the caller, they'll have access to element.Next() (and element.Prev), which is exactly what we want to hide from them.