[Playhouse.migrator] Implement add_foreign_key_constraint or document solution for sqlite
For reference: 

I solved it with this function:

```python
def recreate_table(table: Type[Model], tablename: str):
    logger.info("copying table %s", tablename)
    table_copy_name = tablename + "_x"
    col_names = ",".join(col.name for col in db.get_columns(tablename))
    db.execute_sql("ALTER TABLE %s RENAME TO %s;" % (tablename, table_copy_name))
    db.create_tables([table])
    sql = "INSERT INTO %s (%s) SELECT %s FROM %s;" % (tablename, col_names, col_names, table_copy_name)
    #todo: check for returned sql errors
    db.execute_sql(sql)
    logger.info("deleting copy of table %s", tablename)
    db.execute_sql("DROP TABLE %s_x;" % tablename)
```
Note that you need the column names because the order might change when recreating the table. (E.g. if you replace a deferred constraint with a direct one)

(Just has the problem, that the alter table also renames already existing constraints. Thus make sure, that you do not run this on a table, that is already referenced by a constraint, because otherwise the constraint is changed to `<table>_x`) I've decided to pass on implementing this for Sqlite, but it is possible, as you suggest. Maybe this could be mentioned in the documentation then?
`add_foreign_key_constraint` for the sqlite migrator throws a NotImplemented error.

A possible solution would be to rename the table, recreate the table, copy the data, drop the copy. (as described in https://www.techonthenet.com/sqlite/foreign_keys/foreign_delete.php)

This could either be implemented or at least a comment could be added which points to a possible solution.