Implementing an extensible set of classes for the KeyCommands.

Todo :
- Implement a "register" behavior (when everything is done, each command handler will be able to register the commands it can handle)
- A few IKeyParamterManager implementations for the different command handlers
- INotifyPropertyChanged implementation
- A set of templates and the corresponding data template selector.
Creating a SendKeyCommandParameter, starting to implement  INotifyPropertyChanged
KeyCommands : implementing INotifyPropertyChanged, linking the model to the View.

It works, but it's still pretty ugly
Key configuration refactoring : step 1.
creating a base class for KeyModeEditable & LayoutKeyModeEditable
Improving the KeyMode edition template
Improving the editor's layout
Editor : Using grids to have a panel that resizes properly
Adding the KeyboardSwitch KeyCommand editor. Next step : implement a registering service for these KeyCommand protocol editors
There is now a service designed to Register & Unregister ProtocolManagerEditors (the naming isn't quite perfect). (see below)

Next step : fix the tests. They have not followed the plugin/service orientation of the feature (erh...).
Next next step : externalize the 3 editors in their corresponding CommandManagers
Next next next step : Also register a WPF DataTemplate to feed the datatemplateselector used to edit the KeyCommands
.sln re-arranging and renaming
Editor : several classes/projects renamed
Editor : adding the MoveMouse Protocol Editor
Editor : localization on most of the protocol editors
Editor : adding the click command editor
Editor : Factoring similar data templates + localization via resx
Editor : modifying a key now inserts it back at the correct index of the KeyCommandList
The editor now updates the RequirementLayer according to the KeyCommands used in its keys. (see below for more information)

The editor uses the ProtocolEditorsProvider to fetch the type of the service that is supposed to handle the keycommands found in the keys.
So we need to add the remaining editors (Mode, MonitorOnce, DynCommands) to handle the whole set of commands.
The problem is that these protocols are not following the protocol format (which is "protocol:parameter". if we change the way they work right now, the commands of the currently used CiviKey won't be handled anymore. We'll to figure out a way to migrate them.
Adding an image library to the keyboard editor
Filtering file extensions in the editor's browse filedialog