enable customized keybinding 

the pull request includes following updates:
1. create default keybinding setting file in AppData dir.
2. watch any change to the file and rebind the key according to the change.
3. fix bug: crash when opening the recent file dialog when there's no recent file at all.

some corner cases:
1. if user delete the file, a new one is created
2. if user delete one setting in the file, that default keybinding will take the deleted place.
3. if user enter some invalid keybind, such as 'mi', restore it to original stable state.