Add Relations::Attribute module

This change makes the attribute DSL more generic, results in smaller
files and tests, puts documentation for different purposes in different
places, and creates a neat relations directory.