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.
Within a given type, they will be applied in registration order. If two rules apply to different types, then they shouldn't try to modify the same file. So agree with @ahgittin that it doesn't matter.