[Feature request] Define foreign key constraint name
I've gone ahead and added support for this as the changes required were not extensive, although this is honestly the first time this has come up in 10+ years so I don't know it will be of much general benefit. One gotcha: MySQL doesn't seem to support inlining named check constraints into the field definition, but I'll leave this up to the user to sort out for now (again -- seems unlikely that many people will use it and I've put a note in the docs).
I am working with SQLite, and I am really disappointed with the fact that peewee does not assign any name for a foreign key constraint when it builds an SQL query (`peewee.py`: `ForeignKeyField.foreign_key_constraint()`)

I have three foreign keys in my model, and the full error message from SQLite is just `FOREIGN KEY constraint failed`. Therefore, I have to guess, which one of these keys is actually wrong.

The workaround for same issue with CHECK constraints is to write the full CHECK expression by hand in a field definition:
```
camera_type = TextField(
	null=True,
	constraints=[SQL('CONSTRAINT photo_valid_camera_type '
                 'CHECK(camera_type IN ("smartphone", "webcam", "terminal", "dome"))')]
 )
```
Then the constraint name is included into error message:
`peewee.IntegrityError: CHECK constraint failed: photo_valid_camera_type`
That is not pretty, but it works.

I would like to see the same kind of message for the foreign keys too.

P.S. What about adding "name" argument for the function `peewee.Check(constraint)`?