Documentation and a bit of cleanup.

Added documentation for non-trivial logic in Contexts, Phases and
TreeTransforms.
Removed redundant vars and casts
Fix TypeTestCasts

def p() = println().isInstanceOf[Long & Int]

was rewritten to

val ev$1: [T0]Boolean(x.isInstanceOf) = println().isInstanceOf
println().$isInstanceOf[Long & Int].&&(println().$isInstanceOf[Long & Int])
Intercepted methods transformer

    Replace member references for:
    methods inside Any( == and !=)
    ## on primitives
    .getClass on primitives
move InfoString from ErrorReporting to Decorators and

remove all isSensical/SuppressedMessage logic from InfoString
remove var ContextBase.suppressNonSensicalErrors, and

decouple Diagnostic from ContextBase
add d string interpolator (marks nonsensical error messages)
remove SuppressedMessage exception and update Diagnostic as needed
replace i"..." by d"..." if string might go into a

Diagnostic and might be nonsensical

Conflicts:
	src/dotty/tools/dotc/typer/Checking.scala
	src/dotty/tools/dotc/typer/TypeAssigner.scala
replace some s"..." by i"..."

Conflicts:
	src/dotty/tools/dotc/typer/TypeAssigner.scala
fix: isSensical in d"..." impl must inspect contents of List arg
fix: do not count suppressed messages for summary
Merge pull request #103 from DarkDimius/transform/erasure-transforms

TypeTestCasts fixes and InterceptedMethods transformer
Merge pull request #105 from DarkDimius/docs

Documentation and a bit of cleanup.
Make transforms loggable

using traceIndented in the transform method.
test for allOverriddenSymbols

... to verify whether they work correctly.
Merge pull request #112 from dotty-staging/topic/loggable-transforms

Topic/loggable transforms
Merge pull request #99 from samuelgruetter/infostring2

Error reporting improvements
Better printing of denotations.

Used to print <none> for denotations with a symbol,
now prints "some I" where I is the denotation's info.Reworked phases.
Corrected computations of union denotations.

Cannot discard a symbol simply because the other side's type is weaker.
If in (A | B)#m A and B resolve to different symbols `m`, the resulting denotation
cannot have either `m` as symbol; it must be NoSymbol instead.
Fleshed out Splitter phase

Implemented splitting operations

As a side effect, this contains a test ruling out structural term member dispatch.
Tests 0586 and 0625 which used structural dispatch got moved to neg.