Allow array or hash syntax for partial index conditions

This is the newer version of #13353, based off of the latest master. It allows you to replace these migrations:

```ruby
add_index :foos, :user_id, unique: true, where: "status IN (0, 1)"
```

With this:

```ruby
add_index :foos, :user_id, unique: true, where: { status: [1, 2] }
```

It understands anything that `ActiveRecord::Sanitization.sanitize_sql_for_conditions` accepts.
After a cursory reading of the code paths that use `sanitize_sql_for_conditions` and its aliases, I don't see anywhere else that the second argument is passed, but I'd feel better if someone who knew more about ActiveRecord confirmed that for me!

If it is indeed safe to remove the `alias`, I'm happy to do that.