merge development branch

Without returning ```self```, ```instance_of_deck.shuffle!``` would return an array of cards rather than a Deck object containing the shuffled array of cards. That seemed conceptually odd since I expect that shuffling a deck should return a deck.