FlxGamepadManager: use JoystickEvent.DEVICE_REMOVED for more reliability, #1128

FlxGamepad now has a read-only `connected` property which is false once the device has been removed
getByID() now returns null for invalid IDs instead of creating a dummy FlxGamepad
getByID() now functions as a consecutive list of connected devices (previously scenarios like this were possible:
 - 0 is a valid ID, 1 isn't, 2 is
 - now 0 and 1 are valid)