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.
"like" is subjective, but yeah that's roughly what I was imagining. Seems like the safest route. If you'd like to determine why the code is the way it's currently written, and see if we can remove the alias without breaking anything, feel free!