use ~/.sbt/launch to store sbt jars if script_dir is not writable
Updates to options processing.

Reworked how args are passed to the jvm and to sbt.
This is a breaking change if you used these features.
I dropped a couple options which were more trouble than
they are worth, and am generally assuming less on
startup. The main thing is that you can tightly control
what args arrive at the jvm and at sbt now.

I also changed some defaults for faster startup; it's too
slow passing extra settings to sbt all the time.

Note that -sbt-opts and -jvm-opts take filename arguments;
I'm using command substitution here.

  % sbt -sbt-opts <(printf "%s\n%s\n" -trace 4) -jvm-opts <(echo -verbose:gc)

results in this command line:

  java -Xmx128m -Dsbt.global.base=/Users/paulp/.sbt/0.12.2 \
    -jar sbt-launch.jar "set every traceLevel := 4" shell

Or the same outcome with environment variables:

  % JVM_OPTS="-verbose:gc" SBT_OPTS="-trace 4" sbt
Make -batch work.

Let's hope this lets us run backgrounded. If someone would
like to make it so the runner waits for the backgrounded process
and propagates its exit code, that would be great.
Merge commit 'refs/pull/35/head'