Add KeyMap translation layer

KeyMap integrates with Core's Config and provides cross platform key mapping.

It stays out of the direct input pipeline and is 100% optional. Platforms can start using it with just an extra function call, plus an enum to map between the platform specific key codes and KeyMap's keys.

KeyMap then offers to transform these KeyMap keys into psp buttons (input/input_state.h's pad enum).

KeyMap only saves the user's changes to the config file. KeyMap also allows platform ports to override KeyMap's default mapping. 

Once KeyMap is acceptable I'll start using it to add key mapping for sdl, then android.