Playing with the __new__ method
- Added a __new__ that creates all the default attributes (_net, etc)
- Added a _load class_method that returns an instance by calling the __new__ method, so we get an instance without requiring default arguments
- The _load method also fills the instances dictionary
- Also needed to attach the logger during the _load command, so I created an _add_logger method that does so.  This is called by __init__, but also by _load.