Added an optional rotation argument to the factory method Shape.ellipse