Allow field names as arguments to CompositeField

It is now possible to use field names as well as field instances. This is
required in order to support deconstruct properly and also makes it easier
to implement clone_for_foreignkey.
Support for composite ForeignKeys