Sanity for build.xml: exscriptus&positus delendus est.

Reduced copy/pasting to the best of my antabilities.
The next person to duplicate anything without written
permission will be sentenced to a week in xmhell.

While I was at it, made sure that layering is respected.
The quick phase exclusively uses the locker compiler for building.

The jar task will fail when trying to create an empty jar.

Replaced the crazy if/unless/depends constructs by if/then/else.
Version suffix computation should now be comprehensible.
I threw in some validation to make sure the various suffixes are consistent.

Also, no more init/pre-foo tasks unless absolutely necessary.

Introduced a couple of macros to capture the essence of staged compilation.

Notes:
  - remove lib.extra, standardize on aux.libs
  - collapse *.javac.path and *.build.path
  - rename starr.classpath to starr.compiler.path
  - only repl needs jline, locker.compiler.path = locker.comp.build.path + forkjoin
  - more uniform build.paths (compiler = reflect + library)
    - uniformity means slightly bigger classpaths
      (e.g. forkjoin is only used in library,  but inherited by compiler)
    - pruned: some spurious dependencies removed
    - compilerpathref = compiler build path
  - silence test.osgi, by hook or by crook
  - centralized clean tasks
  - reduce duplication in property usage
  - fix pack.xml to pack scaladoc/partest instead of scaladoc/scala-partest
  - TODO: -XDignore.symbol.file necessary for library? only needed for forkjoin?
  - document usage from jenkins, fix typo: partest.scalac*_*opts

New targets:
 - quick-opt
 - strap-opt
 - test.bc
 - test.osgi
 - test.osgi.comp
 - test.osgi.init
 - test.stability-opt

Removed/replaced targets:
 - asm.clean asm.lib asm.start
 - bc.run
 - dist.latest dist.latest.unix dist.latest.win dist.start
 - docs.all docs.manmaker docs.pre-comp docs.pre-continuations-plugin
 - docs.pre-jline docs.pre-lib docs.pre-man docs.pre-partest docs.pre-scalap
 - forkjoin.clean forkjoin.lib forkjoin.pack forkjoin.start
 - graph.clean
 - init.build.nopatch.release init.build.patch.release init.build.release
 - init.build.snapshot init.build.suffix.done init.extra.tasks
 - init.fail.bad.jdk init.hasbuildnum init.hasmavensuffix init.jars
 - init.jars.check init.maven.jars init.maven.tasks init.osgi.suffix
 - init.osgi.suffix.final init.osgi.suffix.snapshot init.testjava6
 - init.version.done init.version.git init.version.release init.version.snapshot
 - init.warn.jdk7 locker.pre-comp locker.pre-lib locker.pre-reflect
 - locker.unlock.comp locker.unlock.lib locker.unlock.pre-comp
 - locker.unlock.pre-lib locker.unlock.pre-reflect locker.unlock.reflect
 - osgi.clean osgi.test osgi.test.comp osgi.test.init
 - pack.clean pack.pre-bin pack.pre-comp pack.pre-lib pack.pre-partest
 - pack.pre-plugins pack.pre-reflect pack.pre-scalap pack.start
 - palo.comp palo.lib palo.pre-bin palo.pre-comp palo.pre-lib palo.pre-reflect
 - palo.reflect palo.start quick.pre-bin
 - quick.pre-comp quick.pre-interactive quick.pre-lib quick.pre-partest
 - quick.pre-plugins quick.pre-reflect quick.pre-repl quick.pre-scalacheck
 - quick.pre-scaladoc quick.pre-scalap
 - sbt.clean sbt.compile sbt.done sbt.libs sbt.start
 - starr.clean
 - strap.clean strap.pre-comp strap.pre-lib strap.pre-reflect strap.start
 - test.debug test.pre-run
Use stage/project for taskname instead of scalacfork
Allow getting STARR via maven, also: locker.skip

Use `ant -Dstarr.version="2.11.0-M2" -Dlocker.skip=YESSIR`,
to build quick using 2.11.0-M2 (skipping locker, using starr instead).
Merge 2.10.x into master

Merges the relevant part of #2295 (build.xml cleanup),
with the relevant differences in build.xml carried forward,
as well as a fix in interactive/RangePositions for the sbt interface.
Merge master.
Merge pull request #2290 from adriaanm/build-cleanup-squashed

Sanity for build.xml: exscriptus&positus delendus est.