Check that a removed batched migration class is not referenced by existing migrations

In order to prevent incidents, we should check that all batched migration classes referenced by string actually exist in lib/gitlab/background_migration/. If the migration has already executed in .com, and for some reason we need to no-op a BBM and we remove the class, no CI job or check will fail. See !185296 (merged).

Implementation

Idea from @jon_jenkins:

there are a couple possible paths to this - seems like the easiest one would be a pipeline job that just checks the presence of all class names passed to the BBM helpers, which can be teased out using Rubocop's AST search function. So basically, iterate over every migration, record every referenced class, then try to call eval('FooMigrationClass') on each one. If one has been removed, the pipeline throws an error

Edited by Pedro Pombeiro