* 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
instead of using the property map interface.
A nice side-effect is that the wart of having to use property maps to loop over bonds or atom neighbors
is now gone.
This potentially breaks lots of client C++ code.