Add headless mode for clean and snapshot

Two main changes here:

- `clean` and `snapshot` now support a headless mode for `dry.run = TRUE`. In this mode a list of actions is generated and returned (invisibly) but not executed. 
- The code that generates actions and action messages has been generalized to process the actions from any source (`restore`, `clean`, or `snapshot`).

This is a breaking change and the version has been correspondingly bumped.