3705: add BlockWorkList and unit tests
3705: replace pullmgr with a BlockWorkList
3705: describe BlockWorkList flow more explicitly

Updated file comments to describe the overall data flow for a
BlockWorkList manager and worker more explicitly.
3705: update for code review

* Changed the type of the NextItem channel from *list.Element to
  interface{} (i.e. a list.Element.Value)
* Better comments
* Cleaner testing framework
* TestBlockWorkListReaderBlocks to exercise the case where readers block
  when the list is exhausted, and resume when new data is supplied.
3705: drop unnecessary current_list pointer
3705: use helper functions in tests
3705: drop unnecessary 'items' from BlockWorkList
3705: use %v to format interface types
Merge branch '3705-keep-blockworklist'

Closes #3705.