Introduce Keycode to simplify key checks.
Remove VirtKey and KeyName.
Add a Hotkey class for user-configurable keys. Fixes #3779.