Refactor joystick APIs. Joystick logic has been separated from API logic
Merge button and analog stick abstraction