User attr_writer with custom getter and setter.

Allow setting attributes via some_attr(value), together with some_attr
= value, so that can be used inside DSL.
For boolean values, use some_attr? as getter.
Don't deal with validtion right now.
Implement basic tests for all attributes' setters/getters/syntactic sugar.