Refactored OCR code

Moved the OCR code into a new set of classes that make it easier to share common code between the different types of OCR (ie rank, opponent name, and more in the future...). The refactoring also makes it easier to run automated tests so that we can improve the accuracy of OCR.
Automated tests for OCR

Added some JUnit tests for OCR. These will automatically run OCR on the provided rank level and opponent name images to see if they are interpreted correctly. At the moment some of the tests are failing, so that means there's some work to do on the OCR to make it more accurate! :flushed: