Add logging to compiler/cm and setup/parallel-build

@mflatt This is no where near ready to merge, but it is in a workable state (i.e. I can get my tool to use its output).

Issues:
* I couldn't figure out whether or not I should reuse report, as nothing in parallel-build used it, and so I had no idea what its original intentions were.
* Nested logging causes the addition of the name of the logger, I didn't see a clean way of removing that.
* I couldn't figure out how to guarentee that after running some code that may have logged to ensure that a particular reciever had processed it.
* I came up with some events, but I don't know what other tools that would use this might want.