Pass description to formatters

Preparation for documentation formatter which needs the descriptions.
Implement documentation formatter

Documentation formatter keeps track of the group level, making the
exampleGroup* methods mutative. Therefore, formatters may be mutated by
reporter.
Dump failures only when there are failures

Otherwise the "Failures:" line is printed when there are no failures.