Re factor to reek less

This PR brings down the warnings on `reek lib/` from 94 to 88 by:
- Re-factoring Reek::Cli::Report
- A small re-factoring in `Reek:Smells::ClassVariables#examine_context`

This PR also,
- Creates a more consistent interface for report outputs 
 * Basically, the output for yaml format when there were no smells, was `''`, which is inconsistent, because IMHO, the output should be `--- []`, i.e. an empty but valid yaml. This would make it consistent for yaml parsers.
 * Similarly, when there are no warnings and the output expected is html, an html file is created with the message, `0 total warnings`

- Tests output when there are no warnings
- Removes trailing spaces from edited files
Hmmm, it feels kind of weird to test for valid format this late in the objects lifecycle.
How about doing this in the constructor?
Or even better, as early as possible, right in the options parser?