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
@troessner it seems we do this in several places to capture the output produced by a particular method. We can try to replace these with `expect(something).to output('foo bar').to_stdout`.