Added a template graph library to store dep info.
Very messy.

Breaking a lot of things in order to make some fixes.

The definitions are currently not processed in finalise as this will be
driven by a walk over the dependency graph that is not implemented yet.

Split the DataType class into two so that the PartialDataType does not
need a shadow copy of the canonical pointers.

Found a serious bug in the macro for iterator STL containers, fixed the
problem but it still has issues with objects that have no default
constructor. Need to consider switching the element to a reference, or
removing it from everywhere.

Put some string output in the PartialDataType class so that the intermediate
state can be debugged.