cas: write download progress to stdout

This introduces ProgressReader, a io.Reader proxy that keeps track of
the bytes read and fires off a callback with the current state.

Fixes #208


---

There are lots of different ways of doing this. I don't know if there is any precedent for writing to stdout yet, but this seems okay for now.