step 0. synch 2.11 and 2.10 patmat

added compatibility stubs so the rest of the source can be identical
(modulo 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)

The stubs:

```
protected final def dealiasWiden(tp: Type) = tp.dealias // dealiasWiden in 2.11
protected final def mkTRUE  = CODE.TRUE_typed
protected final def mkFALSE = CODE.FALSE_typed
protected final def hasStableSymbol(p: Tree) = p.hasSymbol && p.symbol.isStable // hasSymbolField
protected final def devWarning(str: String) = debugwarn(str)
```
step 1. move pattern matching to transform.patmat
step 2. split patmat in smaller files
type analysis consolidation: instanceOfTpImplies
refactoring: prepares migration from Cond to Prop

doesn't change any behaviour
remove modelNull boolean in favor of subclassing
refactoring: drop Cond in favor of Prop

bringing the various analyses closer together

TODO: use SAT solver for implication checking in the CSE optimization
for now I'm checking implication using an ad-hoc mix
of hash-consing and equality/subset tests...

NOTE: prepareNewAnalysis resets said hash-consing, so must be
called before approximating a match to propositions
refactoring: make hash-consing more robust
refactoring: better name for symbolicCase
moving code around