* add test
* update that test
* add python version of a test
* add some preconditions before dereferencing pointers
* make data members of AtomIterators private (not sure why these were ever made public)
* Fixes#1366
* switch to using std::runtime_error
* switch python tests too
* move the tests from the C++ side to be on the python side.
* add test
* update that test
* add python version of a test
* add some preconditions before dereferencing pointers
* make data members of AtomIterators private (not sure why these were ever made public)
* Fixes#1366
* switch to using std::runtime_error
* switch python tests too