Recursively write out all the components of a data-type in dependency order Component data-types will come before the data-type containing them in the list. \param deporder holds the ordered list of data-types to construct \param mark is a "marking" container to prevent cycles \param ct is the data-type to have written out