goat account migration (#768)
This PR adds support for account migration using the goat CLI tool two
different ways:
- a bunch of account helper commands which individually enable doing an
account migration: creating a new account using service auth and old
DID; migrating all the data; swapping identity around
- a helper command that automates all this (starting with a PLC op auth
token)
The hope is that the migrate command should work in common cases, but
the individual commands allow cleaning up in the case of partial
success, and doing more complex stuff.
Missing pieces as future work:
- `did:web` functionality
- detection of current progress and only continue work that needs
continuing (eg, don't try to re-create new account if it already exists
and can auth with provided credentials)
- proper support for inserting a recovery key when signing PLC op
- more safety validation and guardrails