Bump versions for Scala 2.11.1
Upgrade ASM to 5.0.2

This commit is a squashed version of all commits in PR #3747.

For future upgrades, consult the README and check the commits in
https://github.com/scala/scala/pull/3747/commits

There's one bug in ASM 5.0.2 that breaks scalac:
http://forge.ow2.org/tracker/?func=detail&aid=317200&group_id=23&atid=100023

This bug is fixed in ASM trunk, the patch has been merged into this
commit. A future upgrade of ASM should contain the fix.
Merge pull request #3767 from lrytz/opt/asmUpgradeSquash

Upgrade ASM to 5.0.2
Merge pull request #3766 from adriaanm/bump-version

Bump versions for Scala 2.11.1
Eliminate some N^2 performance in type checking

Where N is the number of members of the enclosing package.

Double definitions of top level classes/objects are issued
elsewhere, as demonstrated by the enclosed test. Packages
don't get synthetic members (synthetic companion objects are
added in `Namers#ensureCompanionObject`).

Here's an example of the improvement.

    % rm -rf /tmp/pkg; (for i in {1..50}; do for j in {1..100}; do echo "package pkg { class A_${i}_${j}___(val a: Int, val b: Int) }"; done; done) > sandbox/A1.scala && time scalac-hash v2.11.0 -Ybackend:GenASM -J-Xmx1G -J-XX:MaxPermSize=400M -d /tmp sandbox/A1.scala;

    real    0m49.762s
    user    1m12.376s
    sys 0m2.371s

    % rm -rf /tmp/pkg; (for i in {1..50}; do for j in {1..100}; do echo "package pkg { class A_${i}_${j}___(val a: Int, val b: Int) }"; done; done) > sandbox/A1.scala && time qbin/scalac -Ybackend:GenASM -J-Xmx1G -J-XX:MaxPermSize=400M -d /tmp sandbox/A1.scala;

    real    0m35.662s
    user    0m58.275s
    sys 0m2.355s

We've still got another source of pathological performance in
creating nested scopes that I'll fix in the next commit.
Optimize nested scope creation

We can copy the hash table from the parent scope, rather
than constructing it from scratch.

This takes us to:

	% rm -rf /tmp/pkg; (for i in {1..50}; do for j in {1..100}; do echo "package pkg { class A_${i}_${j}___(val a: Int, val b: Int) }"; done; done) > sandbox/A1.scala && time qbin/scalac -Ybackend:GenASM -J-Xmx1G -J-XX:MaxPermSize=400M -d /tmp sandbox/A1.scala;

	real	0m19.639s  // head~1 was 0m35.662s
	user	0m41.683s  // head~1 was 0m58.275s
	sys	0m1.886s

In more detail, this commit:

  - Removes the unused `fingerprint` constructor parameter from
    scopes. This is a remnant from a previous optimization attempt
  - Leave only one constructor on Scope which creates an empty
    scope
  - Update the factory method, `newNestedScope`, to copy the hash
    table from the parent if it exists. We can rely on the invariant
    that `outer.hashTable != null || outer.size < MIN_HASH)`, so we
    don't need `if (size >= MIN_HASH) createHash()` anymore. This
    used to be needed in `Scope#<init>`, which accepted an aribitrary
    `initElems: ScopeEntry`.
  - Update subclasses and factories of `Scope` in runtime reflection
    to accomodate the change. Pleasingly, we could actually remove
    the override for `newNestedScope`.
  - Unit tests the functionality I'm touching