Set up a crude interface for hotkey modification
Make hotkeys actually work ingame; duplicates not supported
Added basic detection of duplicate keys
python => python2 in development/ and tests/ and some dev scripts

If you want to run this on debian (which as far as i know is pretty much
the only problematic distribution here), you should be accustomed to the
change necessary by now.
python => python2 in main python files (run_uh and server)

Not including mac setup and build files.
Add OK button
Add remove_key_from_action function to engine
Implement basic duplicate detection. Clean up code
Remove shebangs from files in tests/

Running them directly allegedly doesn't do much.
Add button for resetting keybindings to default.
Switch keys on duplicate.

If the user tries to bind a key which already has a binding, instead of simply removing the old binding, I bind the key binded to the current action to the other action. This is done to prevent having an action without a corresponding key, which is currently not supported by the hotkey implementation.
Add confirmation for replacing keys. Add secondary buttons
Bind events to secondary buttons.

The problem is that now major modifications to the apply_changes function must be made, and there are some cases in which it's not very clear what to do.
Add replace_key_for_action to engine.py
Rewrite apply_change to support UNASSIGNED keys
Clean up hotkey_settings.py
Replace UNASSIGNED with - in GUI
Use itervalues with dict
Make pressing Cancel in Confirmation dialog actually cancel rebind
Use ext.Enum for _Action in keyconfig.

This is done to make it possible to get the actions list properly ordered.