Don't reprocess the options hash on every request
pass over the code comments

* Highlights the requirement of an attributes method.
* Removes some details that depend on the implementation of the class including the module.
* Applies guidelines here and there.
fixes a test, and explains why AR::AttributeMethods checks defined?(@attributes) in some places