Refactor formatters

Clarifies the inheritance hierarchy, and adds specific constructors for formatters that use Console\IO rather than IO\IOInterface
Actually setPresenter and setIo appear unused! I'll take them out.