Added DiscardDeck/DrawDeck, abstracted Deck

Made Deck abstract in order to make different deck types. Also prepped
Player for when I introduce AI opponents. Minor refactoring.