eliminate `Base.registry` in favor of pipeline-based registry
This series leads to the removal of the global Base.registry
as a means for registering sgn objects. Having the registry be a class attribute of the Base
class meant that all element names would have to be globally unique, even if they were not used in the same pipeline instance.
The Base
hash is also changed to no longer be based on the name of the object, but to instead be based on a globally unique identifier. Having the hash based solely on the name string meant that the object and it's name were actually degenerate, which introducing some subtle bugs.
The patch series fixes up some of the behavior of the "Fake" elements as well,to make the tests cleaner. I recommend reviewing each patch in the series individually. But the last two patches that change the Base object registry should get special attention. I'm open to discussion about other ways to handle these issues.