Input

The Joystick Manager no longer handles the nitty gritty work of handling the Joystick states, and now only iterates through the Joysticks to call their update methods. The Joystick struct is now a JoystickState class with an overloaded operator-, which is used to compare states and fire off an event, and is protected class member of the Joystick interface. Removed any cases of the state being passed out of the class.

The action tracker was also moved out of the Joystick Manager, and exists in every JoystickState. I wasn't too sure on what to do with it, but perhaps it can be clarified if this needs to be fixed in my implementation.