Attempt #1 to optimize findMember

Keeps fingerprints in scopes which are bitsets telling you what the last 6 bits of each hashcode of the names stored in the scope are. findMember will avoid looking in a scope if inferprints do not match.
Attempt #2 to optimize findMember
Attempt #3 to optimize findMember

Fixed fingerPrinting scheme to work with rehashes, also added finger prints to typedIdent searches.
Attempt #4 to optimize findMember

broke out findMembers as a separate operation to streamline the code. findMember itself still needs to be optimized.
Attempt #5 to optimize findMember.

Specific optimizations to findMember that have become possible because findMembers is its own function now.
Attemmpt #6 to optimize findMember

Replace scope by ::-list, where new elements are added at the end.
Fixing problem that caused fingerprints to fail in reflection.
Also fixed test case that failed when moving to findMembers. Avoids similar problems in the future by renaming nme.ANYNAME
Attempty #7 to optimize findMember

memberType operations are not cached, so that at most one memberType is taken per found symbol.
Attempt #8 to opimize findMember.

Only consider DEFERRED members in 2nd pass.
Attempt #9 to opimize findMember.

Also avoid recomputation of memberType in findMembers
Variation #10 to optimze findMember

Undoing the memberType caching. This seems to make it slower rather than faster. Also, comparing new vs old statistics shows that only very few asSeenFrom operations are saved by the caching.
SI-5235 Correct usecase variable expansion

The bug is related to a couple of other annoyances, also fixed:
 - usecases without type params were crashing scaladoc due to a change
in the PolyTypes class (not allowing empty tparams list)
 - properly getting rid of backticks (even if the link is not valid)
 - correct linking for usecases with $Coll = `immutable.Seq`
(the symbol searching algorithm was too of restrictive, now we search
the entire ownerchain - and the empty package at the end)
 - give a warning if the type lookup fails
 - finally, added a $Coll variable to List, for some reason it wasn't
there and we were getting immutable.Seq as the result of use cases.
SI-3314 SI-4888 Scaladoc: Relative type prefixes

And adds support for linking to class members, only usable from the
model factory now, so no links to members from the doc comment yet,
sorry. But it fixes the Enumeration problem once and for all!

Also corrected the inTpl for members obtained by implicit conversions,
so they're in the correct template and the comment variable expansion
is done from the correct (but different) template.

Review by @kzys.
Scaladoc: Inherited templates in diagrams

Related to SI-3314, where we started showing inherited templates
that were normally not documented. This patch corrects a problem
in parentTypes that was preventing inherited templates from being
displayed in diagrams.

Also renamed:
PackageDiagram => ContentDiagram
ClassDiagram => InheritanceDiagram
which should have been done much earlier
SI-5965 Scaladoc crash

This bug was fixed by the model upgrade in c11427c1. Test case confirmation.
SI-5558 Package object members indexing

This bug was fixed by the model upgrade in c11427c1. Test case confirmation.
SI-4324 Scaladoc case class argument currying

case class C(i: Int)(b: Boolean) would appear uncurried in scaladoc:
case class C(i: Int, b: Boolean)
Scaladoc: workaround for untypical Map usecases

SI-3448 partial fix:

This enables a workaround for the fact that Map takes two type params
while $Coll takes only one. But it doesn't fix the problem though,
as there's one more piece missing from the puzzle - we need to adjust
the `Coll`s in {immutable, mutable, concurrent}.Map to something that
makes sense for the usecase. And that's not possible. But I'm
committing this nevertheless, maybe other projects can benefit from it.

And for SI-3448, the solution lies in automatic usecase generation,
whenever that will be ready.
SI-4360 Adds prefixes to scaladoc

This was a long-standing issue in scaladoc: It was unable to
disambiguate between entries with the same name. One example is:
immutable.Seq:

trait Seq[+A] extends Iterable[A] with Seq[A] ...

What's that? Seq extends Seq? No, immutable.Seq extends collection.Seq,
but scaladoc was unable to show that. Now it does, depending on the
template you're in. Prefixes are relative and can go back:
-scala.collection.Seq has subclasses *immutable.Seq* and *mutable.Seq*
-scala.immutable.Seq extends *collection.Seq*

Unfortunately the price we pay for this is high, a 20% slowdown in
scaladoc. This is why there is a new flag called -no-prefixes that
disables the prefixes in front of types.

Btw, it also fixes the notorious "booleanValue: This member is added by
an implicit conversion from Boolean to Boolean ...". That's now
java.lang.Boolean, so it becomes clear.

Conflicts:

	src/compiler/scala/tools/nsc/doc/model/diagram/DiagramFactory.scala
Scaladoc minor fix: Typos in diagrams

As suggested by Heather in pull request #816.