Recursive extension causes StackOverflow
Extending self directly causes stack overflow on StructuredDataType via allMembers, e.g.
```
Structure st extends st ()
```
or
```
Structure st extends stx ()
Structure stx extends st ()
```
Need to guard against extending self (also indirectly). This affects `allMembers`, `allConstraints`, `allGates` , etc.
`transitiveExtending` seems to be incorrect as well.
* [x] Add constraint
* [x] Add guard
* [x] Fix and use `transitiveExtending`?
issue