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.
Ah, I see, I didn't realise that. I'd also forgotten that ljcut.f90 only supports cubic boxes. I'm slightly surprised that hasn't thrown all sorts of unpleasant errors, because I've been passing it numpy arrays as "boxl". So at the moment, the output is only valid when the box is cubic, correct?