Added ability to explicitly set foreign key name

Reason: foreign key max length is 30 characters for Oracle.

Also refactored the generation of foreign key name to ForeignKeyConstraint class.