New method dof() which returns degrees of freedom for particle
movement for different geometric objects (Box, Plane, Cyl., Disk, Sphere)
Make dof() function accessible to Structure etc.
New surface overlap checker method that allows for two ignored structures
+ Python binding

This is not the best solution, but will do the job until we know how
to treat an ignore list of arbitrary length.
Ignore reactant structures when placing product in BD mode
+ some useful comments and more debug log output

This was still missing and causing artificially rejected reactions
for particles on a cylinder interacting with disk particles.
Some cleanup of stuff that did not work