Masking the stack trace considered harmful

catching Throwable and eating its stack trace is really a bad idea as it
makes the error diagnostics impossible.

Please feel free to massage this change as you see fit, for example by
improving EnvInjectLogger, but please don't eat the exception stack
trace.

Just for your information, the current exception handling design in Jenkins is roughly like this:

  - InterruptedException and IOException are thrown everywhere
    for remoting and process access, so we pretty much puts them
    in the 'throws' clause for every method.
    We do not try to wrap them into different exceptions.

  - Whenever the caller can provide intermediate context,
    IOException is caught and rewrapped into another IOException.

  - AbortException is used a special subtype of IOException
    where printing the error message is unnecessary. Core
    handles this differently.