Deck methods
Let's begin filling in our empty class methods. A Deck is an ordered
collection of cards so a list is a natural choice of container. Thus
a Deck's sole attribute will be the list of cards. When we initialize
a new Deck we need to fill the list with all 52 possible Cards:

Notice that to do this we begin with an empty list, then append to that
list each one of 52 unique Card objects. The Card objects are
created by calling the card constructor Card and passing it an id
number, so now we know the Card constructor will take an argument
specifying the card to create, i.e. def Card(self, num):
The remaining Deck methods are straightforward reworkings of our
earlier playing card functions, but now embedded into a class:
