Fix issue #8 -- Cyclic references.

We can now have cyclic references between assignments and constructed type
members. This required extensive surgery to properly handle cycles in
dependency sorting and to generate assignment code in two passes.