Initial draft of version 3

I wanted to get more eyes on this at this point as the bulk of the rewrite is complete. Just needs some additional tests for the console reporter. Code coverage at 93.20%.
I split the code for reporting a "request" into it's own function. The other three just call the `print` function and would be one more level of misdirection I don't think we need.