Initial implementation of keyboard-based menu navigation system

For #7
Initially done by @josephbleau with improvements by me.
Based on #430