Add context field to key.

Update private variable names to match coding style.
Change directory structure and update Makefiles.
Add interface to call code outside of core.

The Init() and Update() functions are there for users to implement their
own keymapping code.