Change for #2954: add configurable log levels for different transports

There are a number of small changes in this commit.

1) Previously, we 3 loggers, each with a different transport.  We now have 1 logger with 3 possible transports.  That's more in line with winston's design.
2) I removed the deprecated support for the "quiet" flag.
3) I simplified how default values for the transports are set.
4) File logging is now enabled by default.
5) Console and file logging can have different logging level's set, eg `--log-level info:warn`.  If there's no [:lvl] then both transports use the same level.
6) Webhook will use the same level as file.
7) Provided some examples of where I think fail fast asserts would be appropriate for detecting regressions and config problems.

hmm, now I'm rethinking this. with this defaultValue here, it means that we will by default log to a file even when someone doesn't pass in `-g`. i think for reasons of disk space on CI servers and such, we should have no logging at all until this flag is passed, which means we probably do need to do a default of null here. what do you think?