Change how the migration engine handles UNIQUE constraints
Currently, when adding a UNIQUE constraint via the migration engine, the engine simply adds a constraint to the column. While it is the simplest way to do it in the engine, it is not the most practical. Instead of adding a unique constraint, the engine should instead add a unique index.
In effect, both are the same, but the index has the advantage that it is much more flexible to use in migration scripts. Adding/removing a UNIQUE constraint become only a matter of creating/dropping an index, while removing/adding a constraint might be more complicated (or downright impossible on SQLite).
All in all, using indexes should be much more practical to use than constraints, because it makes the migration scripts easier to write.