Initializing exit value to -1 so that the invoking code knows something went wrong (e.g. a timeout) if it is not explicitly set by other code.
Logging any exception caught by the output reader thread instead of letting it bubble to the UncaughtExceptionHandler (which prints it to stderr by default).
Fixed bug where WinRM timeouts (and other errors encountered while running a WinRM command) were ignored and the exit value was still returned as 0 (fixes #57).