Shain/client logger

:construction: Still some things not quite fleshed out, but a good starting place.

Basically, this proposes a new logging framework/style that retains backwards compatibility (if needed) and allows a simpler, more modular approach to creating and configuring loggers for the chef client. Also included would be some new loggers giving native support for syslog (finally!) and Windows (covered in a separate RFC)
A problem I have with this is that you're now locked to a specific interface for the initializer for a given logger, E.g., you could have different log classes that are created in very different ways:

```ruby
logger_a = LoggerTypeA.new(device, option, option2)
logger_a.level = level

logger_b = LoggerTypeB.new(device, option: value, option2: value2, level: desired_log_level)
```

If we try to standardize these, then you need a wrapper for each supported logger, whereas if users initialize them on their own, we don't have to care what the constructor arguments are, we just assume (or we can explicitly check) that the objects a user gives us provide a certain API (e.g., they respond to `:debug`, `:normal`, etc.).