Introduce complex CDU visualisation

Basically we have to deal with graphviz not handling nested clusters.
Some refactors along the way
Also use complex CDU visualisation on overlaps

That is if when CDUs share a member
Bit of tidying
Test module stub

Nothing meaningful yet
Unwanted module in autogenerated docs

I'll have to figure out how to suppress this later.
Or move the tests out of the hierarchy