Allow Multiple Multi-Key Key-Binds

Wow, writing that title was difficult :smile:

Anyway, what this branch does is add the ability to support a number of multi-key (Shift + Space etc.) keybinds, addressing the issues raised in the BIForums thread.

It also separates the key handling from the UI code, allowing for easier maintenance and fewer merge conflicts as we progress. I've also gone about rewriting much of the handling code to get it as sleek as possible, so maintenance should be a breeze.

## Warning
This branch makes changes to the way settings are stored, switching to a binary data format over XML to allow the serialization of complex keycode data. If being able to edit the settings file manually is an important use case then I will look into changing this back (if possible) to allow XML to be used again.