Refactoring the ConfigDialog class to use different modalities.

The bind on the self._cancel button was provoking strange behaviours
when the ConfigurationDialog was modal. I removed it at no cost for the
actual fonctionnalities (clicking on cancel will still close the
dialog).

I added a EndModal call that provides a return value of wx.ID_SAVE for
the ShowModal call. Otherwise, the value returned to ShowModal() would
be wx.ID_CANCEL for both _save() and _cancel() methods.
Making a distinct config check method. Also, new Exception class.

By refactoring plover/app.py, I'm separating the configuration checks
from the configuration assignations. That way, it will be possible to do
checks before writing the configuration to the config file. This would
happen when the user clicks on the Save button of the configuration
dialog.
Fixing problematic behaviour when something is wrong in the config.

The problem can be reproduced by taking the following steps:
- insert a wrong parameter in the configuration (for instance, a
  non-existing dictionary file). This can be done by editing the
  ~/.config/plover/plover.cfg file or through the configuration dialog
  of plover.
- close Plover (if open)
- launch Plover from the command line (to see the error)

Plover doesn't launch, since it encounters a ValueError that's not
procesed.

I fixed this by catching such errors (renamed in
InvalidConfigurationError), and offering the user a chance to fix his
mistake through the configuration dialog. If, when the user submits his
configuration again (by clicking "Save"), the configuration still is
incorrect, the user will be prompted and offered to correct his
configuration again.

Since this could become a loop, clicking "Cancel" on the configuration
dialog will result in Plover closing without further dialogs.

This is made possible by the previous commits, allowing the
configuration dialog to be modal.

This fix can be improved by validating the configuration in the
ConfigurationDialog class, using a previous commit that separates
verification and usage of the configuration in the StenoEngine class.
This will be the subject of a following pull request.
Small refactor to reduce this line length.
Renaming and moving the config check (making it static).
Using the config check method to forbid the write of an incorrect config

By previously separating the config check method from its use, we are
now able to add a check on the configuration that's about to be applied
to the configuration file. If there's an error in the submitted
configuration, the user will be prompted with an error message, the
configuration file won't be written and the user will get a change to
change the configuration throught the dialog.
Fixing typos in 2 docstrings.
Adding json load (and syntax) checks in check_steno_config().

I had some namespace conflicts over the "dictionary" variable, so I
explicited both the imported object (SUPPORTED_DICTIONARIES_DICT) and
the assigned object (user_dictionary).
Explicitation of the machine.supported variable.

Since this is a class constant, PEP8 recommends that it should be
written in upper case. Instead of using machine.supported, we're now
using SUPPORTED_MACHINES_DICT, which seems more explicit to me.
Fixing the docstring of check_steno_config (+user_dictionary).
Merge pull request #71 from mike-perdide/check_config_dialog

Fixing problematic behaviour when something is wrong in the config.