Make specifying a name mandatory on the **Create index** operation.
In order to work with indexes in subsequent migrations (eg deleting the
index), the user will have to know the name of the migration. If the
migration name is auto-generated and we ever change how names are
generated, then we risk breaking a user's migrations if they have
migrations that refer to these generated names.
Add support for **create index** migrations. A create index migration
looks like this:
```json
{
"name": "10_create_index",
"operations": [
{
"create_index": {
"table": "fruits",
"columns": [
"name"
]
}
}
]
}
```
* On `Start` the index is added to the underlying table.
* On `Rollback` the index is removed from the underlying table.
* `Complete` is a no-op.
There are more options that could be supported here, but are not
included in this PR including:
* Different index types besides the default (btree)
* `UNIQUE`
* `NULLS FIRST / LAST`
* `NULLS DISTINCT`
* Partial indexes