Allow an empty string as a default in variable substitution.

Lanucher configuration parser would previously require a default
value in variable substitution pattern to be non-empty string.
This is an unnecessary restriction as empty value is sometimes
useful as in this example:

  resources: ${sbt.extraClasspath-}

This commit lifts this restriction so empty default values are
allowed. The change has been discussed with @harrah.
Configure additional classpath through `sbt.extraClasspath`

Modify the default launcher configuration for sbt so extra classpath
entries for sbt can be configured through `sbt.extraClasspath` system
property.
Log API diffs using ShowAPI and java-diff-utils library.

Implement displaying API changes by using textual representation
of an API (ShowAPI) and good, old textual diff algorithm. We are
using java-diff-utils library that is distributed under Apache 2.0
license.

Notice that we have only soft dependency on java-diff-utils. It means
that we'll try to lookup java-diff-utils class through reflection
and fail gracefully if none is found on the classpath. This way
sbt is not getting any new dependency. If user needs to debug
api diffs then it's matter of starting sbt with
`-Dsbt.extraClasspath=path/to/diffutils.jar` option passed
to sbt launcher.
Make api diff context size valuable configurable.

Add `apiDiffContextSize` option to `IncOptions` which allows one
to control the size (in lines) of a context used when printing
diffs for textual API representation.

The default value for `apiDiffContextSize` is 5 which seems to be
enough for most situations. This is verified by many debugging
sessions I performed when using api diffing functionality.
Merge api-diff into 0.13
make APIDiff private[inc]
Supply default terminal width to fix #795
Mention api debugging improvements in change summary for 0.13

Mention both #677 and #793 which introduced all functionality needed
for api debugging.
Convert table in cmd line reference to a real rST table.

Previous table was mix of reStructuredText and html produced by
automatic conversion tool. The result was rather unreadable and very
hard to edit.

I converted the table to native reStructuredText's table.
Add `sbt.extraClasspath` to command line reference.
jline/jansi fixes for windows. Fixes #763, fixes #562.

The startup script should set sbt.cygwin=true if running from cygwin.
This will set the terminal type properly for JLine if not already set.
If sbt.cygwin=false or unset and os.name includes "windows", JAnsi is
downloaded by the launcher and installed on standard out/err.

The value for jline.terminal is transformed from explicit jline.X to
the basic types "windows", "unix", or "none".  Now that sbt uses JLine
2.0, these types are understood by both sbt's JLine and Scala's.
Older Scala versions shaded the classes but not the terminal property
so both couldn't be configured with a class name at the same time.
Document changes to dependency trackin in incremental compiler.

Mention distinction between dependencies through inheritance and member
reference. Add an example which demonstrates the difference a little
bit more concretely by using some simple Scala source code.
Add documentation for api debugging feature.

Include a new section in `Understanding-incremental-compilation`
document which explains in detail how to turn on and use the
new api debugging feature.
Merge remote-tracking branch 'inc-documentation' into 0.13
Docs: fix typo
use 0.12.4 final for building
Exclude class directories from plugin classpath used for updateSbtClassifiers: classified jars not available

Fixes #798.
Docs: fixes and reworked Setup page
Docs: plugins repository not needed since it is added by default now
Make GitHub contributors and members pages primary means of credit to avoid staleness