Completed string reading functions.

The 'Stack' datatype got in the way.  Made it difficult to define unit
tests.  The tests would rely on comparing Boards for equality but this
was difficult due to the presence of Stacks.  Stacks also made creation
of the Boards difficult when you already had the 12 card lists.

Removed the Stack datatype, leading to changes in isLegalMove.  Whether
a card list represents a foundation or not is dictated by its position.
The first four card lists are foundations.  The rest are normal rows.