WIP: Refactor attribute stuff to separate object.

I've removed the "support setters" thing for now. I think it keeps the
distinction between setting of a record's declared attributes and
arbitrary setters/getters.

That is, if you want to expose the objects in a different way for the
domain, it's reasonable to do that in a getter, but when you ask for
attributes, they need to be values that have gone through the loader, in
order to ensure proper behavior on to_s.

In this way, I think it should be possible to allow for a wrapping
object, or a subclass, to override a specific point to capture data
coming and going from the repository, and handle domain-specific
attributes in whatever way makes sense.