Add reporters

**Openning for discussion DO NOT MERGE**

Hey @thomasruiz, I'm not sure how this looks but maybe you can take a look through and let me know if I how I am doing things looks ok. I haven't added tests or documentation or general code tidy as I wanted to get your feedback before I went too far.

What this PR does:
- I've moved default reporting into a default reporter class making it easy to add more reporters and then added a tap reporter class.
- The reporter can be specified with `-r <reportername>` from the command line.

Things to note:
- I had to use the $GLOBALS array to get access to the cli inside GivenPHP.php which is pretty hacky. I couldn't see how else to do it. Ideas?

TODO:
- [ ] add tests
- [ ] document code