Optimization/logic improvement in Scopes.

I rescued "isSubScope" from the innards of isSameType
and placed it on Scope.

To write a more efficient "isSameScope", I needed a size
method which wasn't O(n). I now cache the size whenever the
elemsCache is regenerated.
Centrally unify module class representations.

There are these two representations of a type we wish to
treat as the same:

  TypeRef(pre, sym1, Nil) // sym1.isModuleClass, sym1.sourceModule == sym2
  SingleType(pre, sym2)   // sym2.isModule, sym2.moduleClass == sym1

I rolled the recognition of this into normalizePlus where it
won't bother anyone. normalizePlus is the last effort undertaken
by isSameType before it gives up. This allowed significant
simplification of logic elsewhere, since there is a great
deal of logic working around the fact that a TypeRef might
be equivalent to a SingleType even after dealiasing.
Transcendent rewrite of isSameType.

A highly satisfying rewrite of isSameType. It's faster, clearer,
shorter, better commented, and closer to correct. I am especially
pleased that t5580b stopped compiling, given that nobody seemed to
have much idea why it compiled in the first place.
Merge pull request #2356 from paulp/pr/isSameType

Wonderfulizing isSameType
Merge remote-tracking branch 'origin/2.10.x' into merge-2.10.x

* origin/2.10.x:
  if starr.use.released fetch Scala ${starr.version} for STARR
  assume build.release when maven.version.suffix is set
  make quick.done depend on quick.bin again
  SI-7321 Memory leak in specialize on multiple compiler runs.
  Take the N^2 out of the compiler's TreeSet.
  SI-6900 Fix tailrec for dependent method types
  Simplify interplay between Uncurry Info- and Tree-Transformers
  Refactor existential related code out of types.
  Add a cautionary comment to TreeSymSubstitutor.
  SI-6715 Shouldn't return "" from TermNames.originalName
  Backport #2289's TermNames.unexpandedName as TermNames.originalName
  SI-7147 Diagnostic for unexplained assertion in presentation compiler.
  SI-6793 Don't use super param accessors if inaccessible.
  Correct sorting example for Ordering in scaladoc

Conflicts:
	bincompat-backward.whitelist.conf
	bincompat-forward.whitelist.conf
	build.xml
	src/compiler/scala/tools/nsc/transform/UnCurry.scala
	src/reflect/scala/reflect/internal/StdNames.scala
SI-6815 untangle isStable and hasVolatileType

`Symbol::isStable` is now independent of `Symbol::hasVolatileType`,
so that we can allow stable identifiers that are volatile in ident patterns.

This split is validated by SI-6815 and the old logic in RefChecks,
which seems to assume this independence, and thus I don't think ever worked:

```
if (member.isStable && !otherTp.isVolatile) {
  if (memberTp.isVolatile)
    overrideError("has a volatile type; cannot override a member with non-volatile type")
```

Introduces `admitsTypeSelection` and `isStableIdentifierPattern` in treeInfo,
and uses them instead of duplicating that logic all over the place.

Since volatility only matters in the context of type application,
`isStableIdentifierPattern` is used to check patterns (resulting in `==` checks)
and imports.