Making the relationship API on InternalEntityBuilder to preserve and respect the configuration source

Relationships are uniquely identified by the navigation and foreign key properties, i.e. when configuring a relationship that shares a navigation property or the foreign key property set with an existing one they will be merged into one relationship according to their configuration sources, if same the last one wins.

Part of #213
Fixes #1117, #1123, #1125, #1134