Implementing periodic boundaries for rigid bodies

Lots of the changes here are entirely cosmetic or else were intended entirely for my use - e.g. most of the new comments and the changes to pymolwrapper.py which were designed to allow visualisation of small rigid-body periodic systems.

The important changes are the ones where I've defined new or overloaded functions and classes. In particular the new _otp_bulk module, the new classes in minpermdist_stochastic.py and periodic_exact_match.py, and the changes to the cpp files/their wrappers. I've also put in a fairly extensive test routine.
we should be careful about the difference between boxl and boxvec.  I use `boxvec` to mean the array of box lengths.  I use boxl to indicate that it's only implemented for cubic boxes.  Ultimately we want everything to support general rectangular boxes.  Currently it's OK to only support cubic, but we need to be clear about it.