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