Joystick & interface improvements

This pull request does a few things:

- Buttons for remapping joystick buttons have been added to the Keybindings tab in the config menu.
- When changing a keybind, clicking on the close button would rebind that key to the left mouse button. This has been fixed.
- Also when changing a keybind, it's possible to press CTRL+DEL to clear the keybind.
- If there are no joysticks connected at launch, we now set ENABLE_JOYSTICK to false.
- Fixes a bug with not being able to scroll to the bottom of a WidgetScrollBox.