lattice overhaul step 2: convert existing extended lattice wrappers to `LatticeElement` attributes
- pack `PartialStruct` into `LatticeElement.fields`
- pack `Conditional`/`InterConditional` into `LatticeElement.conditional`
- pack `Const` into `LatticeElement.constant`
- pack `PartialTypeVar` into `LatticeElement.partialtypevar`
- pack `LimitedAccuracy` into `LatticeElement.causes`
- pack `PartialOpaque` into `LatticeElement.partialopaque`
- pack `MaybeUndef` into `LatticeElement.maybeundef`
- merge `LatticeElement.partialopaque` and `LatticeElement.partialopaque`
There is not much value in keeping them separate, since a variable
usually doesn't have these "special" attributes at the same time.
- wrap `Vararg` in `LatticeElement.special::Vararg`
- add HACK to allow `DelayedTyp` to sneak in `LatticeElement` system
And now we can eliminate `AbstractLattice`, and our inference code
works with `LatticeElement` (mostly).
- define `SSAValueType(s)` / `Argtypes` aliases