Rename the multiple parent negative gate test.
Create new modules by joining a non-module gate's children that satisfy
modularity.
Use indexed gate shared pointers.
Introduce special treatment of UNITY case of a top gate.