Add rotate abstract method to shape class
Store a rotation property for Shape class
Add ComplexShape class to be inherited by other shapes.

This reduces duplicity of code
Refactor LShape to use ComplexShape
Refactor JShape to use ComplexShape
Refactor IShape to use ComplexShape
Refactor OShape to use ComplexShape
Refactor SShape to use ComplexShape
Refactor TShape to use ComplexShape
Refactor ZShape to use ComplexShape