Implement global shortcut API, fixes #439

@zcbenz, please take a look! 
And thanks for @orzFly on windows platform implementation.
For namespace that only has forward declarations, Chromium's coding convention is to not have the empty new line, so it should be:

```
namespace mate {
class Dictionary;
}
```

instead of:

```
namespace mate {

class Dictionary;

}
```