Check profile using API rather than counting violations.
Whitespace correction.
Major replumbing of macros to support documentation lookup.

The main 'def' macros now add :doc metadata to their vars. This metadata
includes a reference to the object itself, inside a closure, inside a record.
The record has a specialised print method, which just returns the string from
calling the closure. Accessing the :doc metadata is, thus, life. It's also
mutable, so hopefully this is not going to break the world.

This requires a significant replumbing; macros no longer expand to 'def'
forms, but instead use intern. All rather painful.
Added lots of documentation on justification for macros, so I don't try
and fiddle with it again!