Add oriented bounding zone class to be used for safety distance calculations
This MR creates an OrientedBoundingZone class. This class, like a standard BoundingZone, consists of an inner and outer box, with the difference being that both boxes are transformed the same transformation. The orientation of the box should mean that tighter bounding boxes (w.r.t. each volume) can be stored during runtime and used for safety distance calculations. The safety distance is the minimum distance from a given point to the inner or outer box. When a point is between the two boxes, the safety distance is zero.
@sethrj this is ready for your review
(minor floating point issue causing one test failure in one build configuration, will fix in morning)
@sethrj this is ready for another look
@sethrj this should be ready