Bmbouter removes three argument raise style

The three argument syntax was supported with Python 2, but causes a Syntax error in Python 3. To have this accepted upstream, both Python 2 and 3 need to be able to parse this code.

This PR modifies the raising behavior slightly. Previously two different exceptions are re-raised while preserved their original traceback information, but now they are re-raised with a new traceback that is slightly less correct than the original traceback. The type and message of the re-raised traceback are still the same. I am convinced there is no way to preserve the original traceback in Python 2 environments without causing a Python 3 SyntaxError for Python 3 environments. Given that upstream needs to support both, having a slightly less accurate traceback is acceptable because it works consistently in all environments, and does preserve the correct type and message of the traceback.

I also noticed that 2 tests were not working as expected, so I fixed those too to get the module back to 100% test coverage.