Fix typing idempotency bug with Annotated trees

typedAnnotated transforms an Annotated tree into a Typed tree. The
original field of the result is set to the Annotated tree.

The bug was that typedAnnotated was using the untyped Annotated tree
as original, but also set its type. When re-typing later on the same
Annotated tree, the typer would consider it as alreadyTyped. This
is incorrect, the typer needs to convert Annotated trees to Typed.

Also, the Annotated tree only had its type field set, but its children
were still untyped. This crashed the compiler lateron, non-typed trees
would get out of the typing phase.
re-align 2.10.x's pattern matcher with master's

The diff was mostly code cleanup, so most of that was propagated from master to 2.10.x.
The remaining diff is encapsulated in compatibility stubs (see below).
(There was also the on/off potential for the 2.10.x "new" pattern matcher.
 The old one is gone in 2.11, so no turning off new patmat, of course.)

The stubs:

```
protected final def dealiasWiden(tp: Type)   = tp.dealias                       // 2.11: dealiasWiden
protected final def mkTRUE                   = CODE.TRUE_typed                  // 2.11: CODE.TRUE
protected final def mkFALSE                  = CODE.FALSE_typed                 // 2.11: CODE.FALSE
protected final def hasStableSymbol(p: Tree) = p.hasSymbol && p.symbol.isStable // 2.11: p.hasSymbolField && p.symbol.isStable
protected final def devWarning(str: String)  = global.debugwarn(str)            // 2.11: omit
```
[refactor] move PatternMatching.scala to transform.patmat
[refactor] type analysis consolidation

move instanceOfTpImplies out of CodeGen into TypeAnalysis
[refactor] prepare migration from Cond to Prop

There's no change in behavior.
Remove `modelNull` boolean in favor of subclassing.
drop Cond in favor of Prop

This brings the optimizations and the analyses closer together.

In the future we may consider using a solver in the optimizations.
For now, implication is checked ad-hoc using hash-consing and equality/subset tests...

NOTE: prepareNewAnalysis resets said hash-consing, so must be
called before approximating a match to propositions
[refactor] make hash-consing more robust
[refactor] better name for symbolicCase
[refactor] move some logic-related code
Fix SI-7130: Memory leaked caused by Statistics

As described in the ticket, we were leaking memory by holding reference
to Global through by-name argument that was captured by an instance of
a class stored in global HashMap `qs`.

The fix is simple: do not register quantities in HashMap unless statistics
is enabled. This way, if Statistics is disabled we do not store any
references.

We still leak memory in case of statistics being enabled.
SI-7134: don't require doc.Settings in base api of scaladoc.
make Future scaladoc examples up-to-date and compilable
remove unused imports
SI-5744 evidence params are now SYNTHETIC

The macro def <-> macro impl correspondence check compares names of the
corresponding parameters in def and impl and reports an error if they
don't match. This was originally designed to avoid confusion w.r.t named
arguments (which ended up being never implemented as described in SI-5920).

Sometimes parameter names are generated by the compiler, which puts the
user in a tough position. Luckily, there's an escape hatch built it, which
omits the name correspondence check if one of the parameters is SYNTHETIC.
Everything went well until we realized that evidences generated by
context bounds aren't SYNTHETIC, which led to the bug at hand.

Marking auto-generated evidence parameters SYNTHETIC was only the first
step, as the correspondence checker uses parameter symbols, not parameter
trees. Why's that a problem? Because SYNTHETIC doesn't get propagated from def
trees to their underlying symbols (see ValueParameterFlags).

Unfortunately one cannot just change ValueParameterFlags, because that
would break printouts generated in TypeDiagnostics, which is designed to not
print synthetic symbols. Thus we modify methodTypeErrorString in
TypeDiagnostics to always print synthetic symbols.

Therefore now we propagate all paramSym.flags when doing correspondent sweeps
to keep them in sync between def trees and their underlying symbols. This
fixes the problem.
Shadowed Implict typo (fixes no issue)
Merge pull request #2132 from u-abramchuk/SI5744

SI-5744 evidence params are now SYNTHETIC
Removing disabled, unneeded futures tests
Additional test case for Lukas' fix to annotated originals.

This was inspired by the regression that Mark encountered
when upgrading SBT from 2.10.0 to 2.10.1-RC1.
Merge pull request #1 from retronym/topic/annotatedRetyping-test

Additional test case for Lukas' fix to annotated originals.
unit test ide-t1000567 exercises SI-5063, aka #1000567.