Improve code readability

Improved code readability across most code files by renaming variables and clarifying logic. This makes it much simpler to understand what objects are doing what, and names have been fixed to better represent terminology from the game (e.g. cards in the player's hand were previously referred to as being in the deck, which was confusing). Fixed a bug in resurrection handling (was sending to deck, not to the player's hand). Fixed a bug in undoing Lore's effect. Fixed Demon initialization (see the method that handles exiting effects for cards as Demon inherits from Card class but had fewer init parameters). Fixed other issues. This pull request will take some time to review. Take your time. It will be worth the changes.