Allow global injection of compiler options

This will enable broad integration testing of `-Ydelambdafy:method`
and `-Ybackend:GenBCode`.

Attempting to use the built in SBT command:

   `set every scalacOptions := scalacOptions.value ++ extraOpts`

Fails pretty quickly with:

	[info] [error] Cyclic reference involving
	[info] [error]    {file:/Users/jason/code/community-builds/target-0.8.1/extraction/7f33a0a4fdb97adf988ba940c3ec7b135ab51338/projects/556be960de41f6008705036c884135862fecf3d9/}json4s/*:scalacOptions
	[info] [error]    */*:scalacOptions
	[info] [error] Use 'last' for the full log.
	[error] java.lang.RuntimeException:
	[error] 	at scala.sys.package$.error(package.scala:27)

But, I took a look at the implementation of `set` in SBT, and figured
out how to roll my own.

The result is a custom command that lets us express this pseudo SBT:

  val releventScopes = scopes.filter(_.defines(scalacOptions))
  buildSettings += releventScopes.map {
    scope => scalacOptions in scope += extraOptions
  }

This commit does not bootstrap the compiler under the
provided options. I tried the following, but this failed when
I passed multiple options, as I must got the escaping wrong:

   extra.build-options: ["-Dlocker.skip=1", "-Ddocs.skip=1", "-Dscalac.args=\""${vars.scalacOptions}"\""]