Refactored some code

- Removed excessive `.lower()`s in check_term()
- Rewrote deal() to use a for loop rather than a counter-based while loop
- In instances where `if type(terms) != list` was used, converted the single integer/string to a list containing that one value to reduce redundancy
- Clarified joker-based return values
Lots of changes.

See CHANGES.rst.