Major changes. See description.

Game
- Rewrote run(). The logic is more or less right now.
- Added hasValidMove().
Hand
- modified constructor to include pieceNames. Perhaps this could be done
in a better way since right now the pieceName and the pieceData is not
"bound" very closely.
- added a view method since hands were previously hidden from both game
and the players.
- added a get method.
PieceName
- This enum is intended to make comparing Shapes easy.
Shape
- Shapes now have PieceNames
- Shapes are now comparable
- Added a method to get all permutations of a shape.