Add initial cross platform key mapping

Requires a version of native with support for key pass through. Use this version of native if ector has not merged my pull request yet: https://github.com/daniel-dressler/native

This pull request adds key mapping support for SDL and maybe Android if the build passes. It provides a new key mapping screen within the settings. It does not tackle analog sticks at present. I am thinking about how best to support analogs but nothing sounds good yet.

Other platforms will be broken if they do not define LEGACY_KEY_MAPPING
See UI/EmuScreen.cpp for where this define is used.

Since this request adds a couple new files and headers could I ask other platform users to test building? If possible I would appreciate pull requests if you can get the other platforms building with these changes. I do not suggest ector merge this request until the other platforms have defined LEGACY_KEY_MAPPING and fixed any build errors.