Airfix modeling...

Airfix modeling... (Updated support for navigation fixup based on foreign keys)

Added verification of navigation fixup on materialization to monster model tests. Fixed issues with key comparisons:
- Binary keys now compared correctly
- Nullable foreign keys now interact correctly with non-nullable primary keys of the same underlying type
- Null foreign keys are handled

Also added support for 1:1 optional self-referencing relationships which required that navigations to contain information about the direction they point. Currently using the words principal and dependent for this relatively low-level API, but this could be changed if we can find more understandable terms.
Any reason PointsToPrincipal can't just be a regular property on Navigation?