a fast, functional PartialFunction implementation

runtime.AbstractPartialFunction provides a default implementation
for the new-style partial function. In principle this class is only
subclassed by compiler-generated partial functions arising from matches.

Either
 - the apply method (old-style partialfun) or
 - the applyOrElse method (current scheme)
must be overridden, and the isDefinedAt method implemented.
The applyOrElse method implementation is provided to ease the
transition from the old scheme, since starr still generates
old-style PartialFunctions, but locker's library has the
new AbstractPartialFunction.

Thus, this implementation is intended as a drop-in replacement for the
old partial function, and does not require changes to the compiler.
(compiler patches, both for old and new-style pattern matching, follow)

- runtime.AbstractPartialFunction is based on PartialFunction.WithDefault
Original version of FunctionWithDefault by Odersky
(http://article.gmane.org/gmane.comp.lang.scala.internals/4032)
- better performance for OrElse#applyOrElse, OrElse#lift, PF.cond
- new combinator methods: PF#run, PF#runWith, PF.apply

authored by @pavelpavlov, refactored by @adriaanm, review by @paulp
old patmat support for the applyOrElse partial fun

minimal fixes for typedMatchAnonFun so it compiles

TODO: support for AbstractTotalFunction (when match is exhaustive)
virtpatmat support for the new partialfunction

avoid casting default call in applyOrElse:
the result type of the match is always B1,
not the result type inferred from typing the cases
specialization: see outer contexts to fix symbols

this corner case in Duplicators is hit when compiling
the new AbstractPartialFunction (which is specialized) under -Yvirtpatmat

TODO: why do we need to guard against cx.scope eq null in typers?

review by @vladureche
Remove blocking from execution contexts.
remove unnecessary classpath entry
Merge pull request #344 from lrytz/classpathFix

remove unnecessary classpath entry
Merge remote-tracking branches 'heathermiller/doc/linking' and 'axel22/feature/future-compat' into develop
Fix for string bug in genjvm.

It's -Ycheck:jvm, not -Ycheck:genjvm.  There is no genjvm.
Fix for regression with inference at arity 21+.

A classic "off by two" error.  Closes SI-4545, SI-5633.
Tagged builds now display tag version. (maven = canonical).

Conflicts:

	build.xml
Fixes SI-5632 (serialization of large HashTables)

Converts HashTable threshold to long before multiplying by a large value.

Test is very slow and requires giving partest more RAM. Rather than committing it, I'm attaching it as a gist. Whoever does the merge is more than welcome to commit it along with this patch…

Test: https://gist.github.com/2257703
Merge remote-tracking branch 'adriaanm/topic/partialfun' into develop
Build.xml can now resolve artifacts from maven central and use them in the build.
* Artifacts are resovled from maven central after the STARR repostiory
* All maven dependencies are added to aux.libs (every classpath)
* Typesafe config library is added by efault.
Maven repository dependencies are now added to distributions.
Cleaned up "isTupleTypeOrSubtype".

More principled logic for determining if a type is a particular
type or a specialized subtype of that type.
More principled unwrapping of types.

Made generic type unwrapper for use by the many methods which
need various types to be transparent with respect to the operation
being performed.  AnnotatedType, PolyType, NullaryMethodType,
and ExistentialType all commonly match this description.
Pushed Symbol/Type creation partitioning further.

Yet more funnelling of immutable creation-time known information
into the identities of symbols and types.
SI-5627 BigInt.equals(Number) and BigDecimal.equals(Number) should implement equality in mathematical sense
Merge branch 'master' into feature/collection-concurrent

Conflicts:
	src/library/scala/collection/JavaConversions.scala
	src/library/scala/collection/JavaConverters.scala

Add one test for concurrent map conversion.