The old reporter methods related to the "remove" command is not used anymore and instead the shared `onMigrationStart`, `onMigrationSuccess` and `onMigrationError` methods are used.
Some preparation has also been made to support for removing multiple migrations at once in the future, similar to how the `--from` and `--to` CLI options work for the "up" command.
Using an AbortSignal and Promise.race we abandon running migrations that take longer to complete after the process is aborted than the given abortRespite period
* feat(types): move Emigrate types to separate package
Also refactor the types to use discriminating unions for easier error handling and such.
Errors passed to storage plugins should now be serialized and storage plugins are expected to return already serialized errors on failed history entries.
* fix(mysql): handle the new type changes
* fix(storage-fs): handle the new type changes
* feat(cli): better error handling and types
Adapt to the new types from the @emigrate/types package, like discriminating union types and serializing and deserializing errors
* feat(reporter-default): print CLI version number
* feat(reporter-default): print relative paths to migrations instead of only the file names
This makes the output clickable in most shells
* feat(reporter-pino): include the Emigrate CLI version in each log
In interactive mode the output is normally clipped to the number of lines that the current terminal window can show without scrolling
so to remedy that the full command output is now printed to the console when done