GamePad Refactor

This is a fairly major refactor of the GamePad classes across all platforms.

 - Moved all GamePad implementations to the common Input folder.
 - Added GamePad.cs with full public API and proper documentation.
 - We now use partial classes and private functions to resolve platform code.

There is more work we can do to improve the GamePad classes still.

 - #2367 - Implement Common Virtual GamePad
 - #2368 - Implement GamePadDeadZone