Add setters.

There's still some bugs to iron out but as a PoC this looks like it'll work. hier13() now creates a new "accessor" lvalue type for all accessors, rather than immediately invoking the getter and returning an rvalue. Most consumers will immediately turn it into an rvalue anyway. There are four cases where this is not true:

* Assignments, which call store(). That now invokes the setter.
* Calls, which pass lvalues by-reference. Accessors don't work like that, so they get turned into rvalues here.
* Inc/dec operators, which are not compatible with setters yet.
* The `delete` keyword which zaps lvalues. That's not working for setters yet either.