allow a Foreign key to be nullable

All or none of the Foreign fields must be nullable.

See the Tree test case added in CompositeTest.hs

I made a questionable breaking change of the type of ForeignDef. Since we said 2.0 was unstable I am ok with releasing this with just a bump to 2.0.1 even though that breaks.