Factory function for TreeReporter takes options

To make it easier to refactor into allowing the client to control behavior
Changed runner function to allow reporter options
Add better support for controlling reporter output

Modifications to reporter options and startup code allows the caller to control
what to output.