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.
Fixes some unnecessary capitalization in monsters.json.
Emergency fix to supply KEY_END outside of curses.
don't use reinterpret_cast, use dynamic_cast on objects with virtual inheritance
clean out duplicate & commented out code
astyle
Set scroll position to 0, if all items are in view

Prevent a negative scroll position, because the display loops start at the scroll offset that means they would start with a negative value and accessing that entry in a list causes a crash.
Prevent negative selection indices in worldfactory.cpp

initialize active_header & last_active_header to 0.