Fixed Edge#reverse to be more subclass friendly

Now it uses self.class.new instead of Edge.new
Added a length attribute to Edge
Added #min, #max, and #minmax to the Point family
Added minimal support for Bezier curves