This makes sure the previously bound context is restored after creating a
new context. This follows what is already happening on windows.
All system backend are patched.
This also removes the goto and some code duplication.
Differential Revision: https://developer.blender.org/D12455