Have add_concurrent_foreign_key clean up FK if validation fails

In the gitlab-com/gl-infra/production#18806 (closed) incident review, a corrective action action was identified where we could make add_concurrent_foreign_key drop the constraint it added if the validation step fails, instead of leaving it in a NOT VALID state. (And we should probably also use the same logic in validate_foreign_key.)

We should have the migration fail, but have it clean after itself more completely.

We'd probably want to make the change here - https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/database/migration_helpers.rb#L306-306.

Context: gitlab-com/gl-infra/production#18806 (comment 2197960306)

Edited by Pedro Pombeiro