Move logging functionality to separate classes

Currently the logic that decides when and how to show output is spread into various static methods of the WP_CLI class.

We could tidy it up by having separate logger classes for various scenarios. Buzz phrase: dependency injection.

This would also pave the way for custom loggers: #465