Moved setup of requested logging level so that it happens around the entire session. Previously it happened much later in the lifecycle and once per build per invocation. This change means that the logging level applies to all logging done during the session.
Moved validation of certain aspects of the provided `StartParameters` to happen early at the start of the session, so that the values can be used during session setup. The validation used to happen much later. Also added some error reporting around the session, so that any unreported exception that happens during the session is correctly reported and transformed. For example, a failure to setup the session services.