Cpython unit tests

Create PR to merge the cpython unit test feature branch back to master.

Much work to do here!