Clean up ModelSpec a bit.
Change Attribute to no longer have a `beforeSet()` method. Instead, the default `set()` calls `convert()`, which may be called by a `set` config function as well when one is provided.

This gives the user complete flexibility as to whether do the full conversion themselves in their user-provided `set` function, or call the original `convert` method from within their `set` function and either add pre or post processing to the converted value.

Also fix some other doc comments, and tests.