Automatically generate IDisplayName

*   Refactor how body of defcomponent(k) is parsed to allow merging in default
    implementations of protocols.
*   Merge in a default version of IDisplayName that returns the name of
    component as string.

Resolves #36