Feature: transform state

For transforming persisted state, e.g. if a class has been renamed.

For reviewing, probably best to go through one commit at a time.

For the CLI support, this is really to get early feedback. It needs improvements, and I haven't written any docs.
@ahgittin not sure why I changed this! If we're now not getting logging of the individual problems, then definitely agree should restore this.