Refactored to comply with snake, fixed boundary bugs, implemented deflection

- The code's organization was overhauled to match the snake files. Both its organization and its comments should be clearer now. Global variables were also made local.
- Fixed several bugs with behaviour at the playable area boundaries and resolved problematic inconsistencies with nomenclature.
- Implemented paddle deflection in the traditional manner; the paddle impact zone is split into eight areas and the ball will return on a different angle depending on the one hit.
- Like all current versions of games, this code is equipped with test input handling using a keyboard on Windows. To use it, de-comment everything below the two "Windows:" tags, comment everything below the "Linux:" tags, and de-comment the bodies of getLeftInput() and getRightInput(). Control of the respective paddles is then linked to WASD and IJKL in theory, but considerations for buffered keyboard input have not been made so only the left paddle may be controlled without joysticks
(using WASD).