huge grohl rewrite

* separate Context into a separate type from the Logger
* support the Statter and ExceptionReporter interfaces
* Remove mutex concerns, add channel logger
put format tests in format_test
actually add format test
move some function declarations around
allow you to set a custom ExceptionReporter on a context
merge #3
Merge pull request #4 from technoweenie/rewrite

huge grohl rewrite