Introduce a type for virtual key constants

Introduce the type `VKEY` to be used in all locations that require
reference to virtual keys to allow simpler optimisations later.

`VKEY` is an attempt to localise all references to virtual key values.
A brief observation indicates the clash in concepts of the number of
possibilities storable by a `USHORT` and the number of possibilities
actually used by `VK_*` constants.

The type `VKEY` needs to be kept in line with the type of
`RAWKEYBOARD::VKey`.