Refactor valid_card() and play_card, fix who_won()

+ Refactor trick.valid_card() and trick.play_card() so that there’s no
code duplication
+ Fix two bugs in trick.who_won():
  + in first check suit wasn’t being .lower()ed so it was being skipped
  + in first check, rank was not being reset to use highest encountered
rank
+ update docstrings