Begin revised type unification system
Merge branch 'codegen' into codegen-newunify
Switch to new unifier
Fix attribute matching/generation
cleanup
Stubs for named predicates
Handle explicit and named types
Make sure icmp and select in target propagate i1 to source. Avoid i1 requirement for
icmp and select in source, since it is guaranteed by the structure.
Check for type constraints implied by precondition. Check precondition after checking
type constraints.
cleanup
Switch back to assuming type constraints implied by precondition..

Problems arose with anonymous values in the precondition leading to broken type
equality checks. Possibly need a new design to handle this correctly.