Added util.py which as a get_rotated_about() function for rotating points in 2D space
Added clone()
All now inherit from CombinatorialBody2d instead of CombinatorialBody. All 2d objects should now support a get_rotated_about() function that returns a clone of the calling object rotated about the point specified.
Regions can now be rotated about points like bodies
Fixed collimator width.
Changed all rotate_about() calls to rotate_about_2d() for coherence.
Updated rotation functions to use util.rotate_about_2d()
clone() and rotate_about_2d() are now required for CombinatorialBody2d
Updated rotate functions
Regions can now be drawn (untested)
Added functions for generating the bow tie filter
Fixed bug where only the right side of the tree was rotated
Simplified get_rotated_about_2d()
Fixed issue where rotation was always about (0, 0)
Fixed issue where theta was converted to radians twice
Updated so it now generates bowtie filters of the correct shape