WIP: LiteralType: 42.type and friends

`LiteralType` is a `SingleType` with a literal for its path.
With an example: `1.type` is to `p.type`, as `1` is to `p`.

`l.type` is the most precise type for an expression known to evaluate to `l`.
Note that we cannot replace the expression by `l`, since it may have a side effect.

`ConstantType(c)` is the type of an expression that can be constant folded to `c`.

When an expressions should not be constantfolded, the corresponding `LiteralType`
is created: `ConstantType(c).deconst == LiteralType(c)`
(this is where all `LiteralType`s originate, except for unpickling).

`typedLiteral` always infers a `ConstantType`, which is subsequently
`deconst`ed or `widen`ed where necessary (see `widenIfNecessary`).
In short, only `final val`s may have `ConstantType`s, and
`widen`ing is required to ensure that a path is stable and accessible (roughly speaking).

When checking subtyping, this invariant is useful: `LiteralType(c).widen == c.tpe`.
equals for type tests