Use component scope instead of id() for DOT nodes
Use component scope instead of id() for DOT nodes

When generating DOT output, we were using id() when generating node and
cluster names to ensure their uniqueness. This worked fine, but made the
generated DOT unstable run-to-run since id() is based on the component's
memory location.

We now use the component's scope which will also be unique for well-formed
component hierarchies. To use the scope in cluster and node identifiers, we
just need to quote the identifier since there are '.' characters in
component scopes.

This change makes the generated DOT stable from run-to-run. Arguably, it
also makes the DOT a little more human-readable.

SanDisk-Open-Source/desmod,bgmerrell/desmod