Removed state modification. Removed unnecessary use of deepcopy. Better use of strategy pattern for play function.
Modified tests to reflect last changes. Added more tests.