Add useful functions to Geometry primitives

This PR ports most of @jspahrsummers's [Archimedes](https://github.com/github/archimedes) library into Splat and applies them to System.Drawing primitives. There are a few things missing, mostly around CGRect methods from CoreGraphics that don't exist here (though I did port over `CGRectDivide`)