833 Allow log level to be set in debug mode.

Fixes #833 by allowing any log level to be set in debug mode. If this is accepted then it makes #871 obsolete.

@Romoku, do you want to see if this does what you hope it will? You should run with `-D -loglevel info` or `error` if you do not want to see all of the `debug` output.
Correct, but I left this here for a couple of reasons:
  1. I had to do something to convert from a nullable `LogLevel?` to a non-null `LogLevel` so that it could be passed as a parameter below. Just doing `commandArgs.LogLevel.Value` felt a bit wrong and gave a `Possible 'System.InvalidOperationException'` warning.
  2. Since this method and class are public, it didn't feel right to assume that it would only ever be called with args that have been sanitized in `ArgumentHandler`.

I also considered only doing the logic here, but again that felt wrong because the `ArgumentHandler` should output args in their expected final form.

The only other option that I could think of was having two classes along the lines of `PreParsingScriptCsArgs` and `ParsedScriptCsArgs` (with better names!) which had a `LogLevel?` and a `LogLevel` respectively, but I felt that may have been overkill!