Updates to classes

I left comments in the places I changed the files, for the most part. The two I didn't leave comments for were in Deck: I made `$deck` private because there was no good reason to access it outside of the Deck class. I also removed the parameter of the call to `$deck->shuffle()` because that method doesn't actually accept a parameter. I'd recommend looking at the differences between each file and reading the comments, then letting me know if you have any other questions. I left a large number of `todo` comments; those are problems for you to solve (I wouldn't want to do all your work for you!).