Add static intersection methods to the Rectangle2D, Rectangle2F and Rectangle2I classes.
These methods should take two instances of the same Rectangle2* type as parameters and return an Optional<Polygon2*> with the optional intersection.
They previously had methods returning an Optional<Rectangle2*>. This only works if both are axis-aligned.