Refactor report printing to be more OO.

To ease eventual JS port.

Also allows decoupling report generation from printing, which should
allow lifting of the profile-based pruning code.
Move pruning code to the top-level of the coach.