The goal here is to eventually replace some code in python-wrapper.swig with this code. This way it can be properly unit tested and we can easily deal with Python version differences.
the first set of patches will focus on just getting the classes in with unit tests to confirm they work, and then I will replace the code in python-wrapper.swig with this code.
Note that the implementation of ResolveName here differs from the implementation of ResolvePythonName in python-wrapper.swig. The two methods seem equivalent to me, with this one being more straightforward, generic, and efficient.
I need to delete this method. This was left in by accident. The real implementation is in the base class.