Merge pull request #169 from oli-obk/master

Various Linux fixes
Clean up InputMac.mm
Fix indexing bugs in multi-gamepad code
Remove more cruft from InputMac.mm
Fix handling of gamepads that are being unplugged
Add little test program for button IDs
Add multi-gamepad support for Windows
Change InputMac.mm structure to be a little more like InputWin.cpp
Bring the two button constant lists closer together
Make feature_tests/button_ids.rb a little more verbose
Merge Buttons.hpp and ButtonsMac.hpp into one file
Update Ruby wrapper
Add support for up to 8 extra mouse buttons
Add a temporary helper rake task to regenerate the SWIG wrappers
Fix two fixes missing from last commit
Fix a typo in Buttons.hpp
Add constants for some missing, common keys
Untested support for msOther0-msOther7 on Linux
Fix bug #161 on github
Work around bizarre crashes in exception handling(?)