change the earlyStartup stuff, moved workspaceID into prefs store state
stuff, and made authenticate throw and exception if failed, so we could
send an error message with some detail.

Of course I didn't test anything!