Added ability to override `Reporter` used during compilation. 

See issue #89.
I used `/**` because the methods are protected, and therefore wanted the documentation to show up in any scaladoc as a reference. If you don't like it, could you please just remove them in the merge to save another round trip with this?