Rename relations to associations

This better matches Rails' terminology, which will benefit us
Simplify lazy dynamic attribute a bit
Add default setter and getter for dynamic attributes

When one is defined but the other's not, a default
setter or getter will be used.
Rewrite association structure