small changes

  - use shift on deck instead of @top
  - simplify validate on hand (is it still needed?)
  - add error handling for deck running out of cards
Merging changes from Cory.