Refactor output rendering into reporter classes.

First step toward to issue #1 including CSV and JSON formatters. May as well support `py:<class>` to allow other implementations of the `BaseReporter` interface.