Try/cycle detection

Some initial steps to take over former RefChecks functionality. Includes some cleanups in transforms.
The biggest change has to do F-bounded polymorphism. We now do cycle detection early and break
all legal cycles with a LazyRef type. Without this precaution lots of code would blow up with a stack overflow - checkbounds being one example.