Avoid caching different types in TypeSymbol.

Try to prevent TypeSymbols from caching a different typeref
for tpe_* and typeConstructor if the symbol is monomorphic.
I find this undesirable:

  scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor
  res0: Boolean = true

  scala> AnyRefClass.tpe eq AnyRefClass.typeConstructor
  res1: Boolean = false
Concision contribution.

We have lots of core classes for which we need not go through
the symbol to get the type:

  ObjectClass.tpe -> ObjectTpe
  AnyClass.tpe    -> AnyTpe

I updated everything to use the concise/direct version,
and eliminated a bunch of noise where places were calling
typeConstructor, erasedTypeRef, and other different-seeming methods
only to always wind up with the same type they would have received
from sym.tpe. There's only one Object type, before or after erasure,
with or without type arguments.

Calls to typeConstructor were especially damaging because (see
previous commit) it had a tendency to cache a different type than
the type one would find via other means. The two types would
compare =:=, but possibly not == and definitely not eq. (I still
don't understand what == is expected to do with types.)
A couple additional simplifications.

As noted by reviewer.
Merge pull request #2585 from paulp/pr/concision-contribution

Concision contribution.