update type union and instantiation for new representation
switch to new type system APIs in several places
get things working well enough to load boot.jl
subtype: add concrete matching rule and work on Vararg constraints
improve diagonal subtype rule