remove input_manager::action_to_input

The default context is now part of the action_contexts map.
The loading code would put input events for the context "default" into action_to_input, so action_contexts could never contain an entry for key "default".
Making this two separate members complicates both loading and saving the data and has no actual advantage.
implement input_manager::save to save keybindings
add functions and user interface to change keybindings
Add some keycode names and return unknown key xxx for those.
Add portable output of input_manager::get_keyname

This is used to store keycodes in the keybindings file even if the program does not know the names of those keys.
So ifthe user enters a key that the program knows no name for, it will still work, only be displayed as "unknown key xxx".
use fold_and_print in input_context::display_help
make the list of keybindings scrollable
add indendation
slight changes to input_context::display_help:

added comments
moved some parts outside the loop
cleared color calculation
made input_context::get_desc return "Unbound!" to eliminate special case handling
make it a while(true) loop
when changing keybindings check for conflicting keys
use input_context in bionics menu
Merge input manager extension.