Move formatter protocol docs to a psuedo class.

As discussed in #1627, similar to how @myronmarston improved the matcher protocol docs, this moves the formatter protocol documentation out of the base formatter and into a psuedo class.
Is there any useful ways to separate these methods into categories?  For the matcher protocol I split it into optional and required methods and used the `@group` YARD tags to group them, and I think with this many methods it would be helpful to give it some organization.