Logger now operates on writers instead of outputs.

- Logger no longer holds a list of outputs but a list of writers.
- LoggerMessage now takes a Logger instance argument instead of a
LoggerWriter (since it changed purpose).
- LoggerDocoration is now set per LoggerWritter, and thus LoggerOutput.