Support composite keys for many to many tables

Hi,

This pull request allows a user to specify that no Id field will be created for a many to many table, but instead a composite key will be created using all the fields. It uses an entity attribute "composite" to override the standard behaviour.
All the fields must be foreign keys only and that needs to a miminum of two foreign keys which is checked in TH.hs.
All persistent functionality is supported and I have an upcoming pull request that supports Esqueleto with these changes.
Let me know of any improvements I can make to this or any ideas or concerns.

Thanks,
Grant