Eng4382pre

Some preparatory work for final ENG-4382 resolution:

Add an optional 'service' key to the JSON blob accepted by @SnapshotSave.  When the value is 'log_truncation' and command logging is present and enabled, force a truncation snapshot rather than taking a normal user-requested snapshot.

Contains a fairly substantial refactoring of the @SnapshotSave parameter handling/parsing/validation.

Also paired with a very small pro pull request for the updated CommandLog interface.