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.
I really like the way `CompoundRuntimeException` reports things, with a smart summary when there are many errors.

That coupled with the `LOG.warn` above means we get very good logging on rebind failures.

@aledsage Do you think the reporting in your new scheme is just as good?  Or did you do it for code cleanliness?