Refactor reporting handling as a precondition for sorting output.

This PR cleans up the way we handle the final reporting of warnings and encapsulates reporting properly.
Also, with this in place we can implement the sorting by issue count pretty easily since we then just need to sort by examiners within a reporter.