rotateCW() now returns a new Shape object with the rotation applied
Action and Shape classes are now immutable
implemented Board.doAction()