Content sources cancel

Things to look for:
- Renamed ContentWarehouse to ContentContainer.  Just wasn't working for me ;)
- Add generic utility for calling and canceling synchronous flows.
- Moved the download listener to the download() method instead of instance attribute.  The listener does not apply to refresh() so kind of weird.
- Refit cancel to use the cancel utility.
  - Removed unwanted 'cancelled' state (attribute).
  - Removed cancel() from the Container (again, weird).