Remove unused name field from CardPile objects
Refactor card selection and turn execution

A turn now consists of selecting cards followed by executing the
turn. The executeTurn() function takes care of playing the cards
or picking up the discard pile, as necessary.
Move middleclass to a library subdirectory