This makes joystick support initialize the first time a joystick
function is called, including those gamepad functions that are layered
on top of joystick functions.
Related to #1284.
Related to #1646.
Inclusion of internal headers is already both centralized and follows
strict rules. Inclusion guards are both an unneccessary maintenance
burden and may hide inclusion order bugs.
Use platform prefix for files specific to that platform AND that have no
credible alternative API on that platform.
The exception is WinMM, which will be replaced before 3.2.