Refactor and new features

Easiest to pull down rather than make sense of the diff. Most significantly I added base classes (`FilesBase.py`) for building file sets and an API for using `Future`s (`Tools.py`) with ST callbacks. Additional details in the commit messages. Not necessarily ready for primetime until add/remove is implemented. Feedback welcome!