Navigating to the right foreign land... (Add error checking/robustness to FK/navigations in core metadata)

This came out of issues where Keys would be left dangling when attempting to build and change relationships with the fluent API. It also means that obviously wrong metadata such as navigations that don't match CLR properties are flagged early.

Sometimes we need to address properties and navigations as unified things, and sometimes as independent things. I will file an issue for us to discuss whether this means that they should be unified within the EntityType data structures. Also, navigations are currently not stored in deterministic order, which may not be a problem since they aren't used in the store model, but is something that should be considered.