ruby: define 'MigrationError' class
ruby: define 'RepositoryOperation' class
ruby: define 'RepositoryOperation#unapply_migrations_only_in_database()'
ruby: define 'RepositoryOperation#unapply_migrations()'
ruby: define 'RepositoryOperation#apply_migrations()'
ruby: change 'ApplyAction' class to use 'RepositoryOperation'
ruby: change 'UnapplyAction' class to use 'RepositoryOperation'
ruby: remove 'VersionsHelper' module
ruby: refactor private methods in 'RepositoryOperation' class
ruby: rename methods in 'RepositoryOperation' class
ruby: move 'Repository#upgrade()' and '#downgrade()' to 'RepositoryOperation' class
ruby: remove 'UpgradeFailedError' and 'DowngradeFailedError' classes
ruby: define 'Action#_wrapper()' helper method
ruby: refactor action classes to use '_wrap()' helper method
ruby: define 'RepositoryOperation#status()'
ruby: change 'StatusAction#run()' to call 'RepositoryOperation#status'
ruby: define 'RepositoryOperation#history'
ruby: change 'HistAction#run()' to call 'RepositoryOperation#history()'
ruby: move 'Repository#inspect()' to 'RepositoryOperation' class
ruby: move 'Repository#get_migrations()' to 'RepositoryOperation#_get_migrations_hist_and_applied()'