Use local variable to avoid duplicate method calls
Add a module comment for Relationship::ViaDefinition
Use an ivar to avoid duplicate method calls
Add module comments for Relationship subclasses