Extract sdl keycode to curses key into a separate function

sdl_keycode_to_curses: add support for function keys and numpad keys.

Also add delete key to the wrapped keys from SDL to ncurses.
make the alt+numpad code a bit simpler
Replace lastchar_isbutton, lastchar and lastchar_is_mouse with a single input_event

It contains all the possible input types (those that the input manager understands).
The previous implementation used some magic combination of the two booleans and lastchar to determine the input type.
This is now done directly at the input.

It also handles UTF8-strings coming from SDL. SDL reports input as UTF-8 string. The previous implementation would only copy the very first byte from that string and return that via getch().
All the other bytes of the UTF-8 were lost. This is now fixed and compatible with curses. Curses returns a single UTF-8 character via several calls to getch, same does the SDL wrapper now.

Instead of creating the input_event in input_manager::get_input_event, it is now created in the actual input functions, which are specific to the input type.
Note that input_event is automatically initialized as type ERROR.

ALT+number sequences in SDL_TEXTINPUT are interpreted as decimal value
of a UNICODE code point and converted to an UTF-8 sequence, which is
than commited the same way as input from SDL_TEXTINPUT is.
Add utf8_wrapper class to handle utf8 strings nicely.

Basically a utf8 string stuffed into a std::string. But note that std::string may report a length of 6 chars, while the utf8-string is actually only 2 unicode characters long. This class handles this.
Add function read sequence of utf-8 bytes with getch

This reads the UTF-8 encoded bytes (each call to getch returns a single byte of an UTF-8 encoded character) and stores them in a utf8_wrapper.
The function also handles the cursor position in the current strings and some special keys (HOME,END,DELETE,BACKSPACE).

Use that function in string_input_win, new world name, new character name.

Fix a display bug in string_input_win: consider the underscore of the cursor at the end of the input for shifting.
Display UTF-8 character (not bytes!) individually by splitting with utf8_wrapper.
tools, professions
template
iuse
Change a bunch of functions to use iterators
Make error messages show properly when getting certain computer failures

Also change them to use iterators
Convert most of construction.cpp to use iterators
Convert almost all of crafting.cpp to use iterators
Change some of creature_tracker.cpp to use iterators
Change parts of defense.cpp to use iterators
Change dependency_tree.cpp to use iterators
Change disease.cpp to use iterators
Change most of editmap.cpp to use iterators
Change faction.cpp to use iterators
Change field.cpp to use iterators
More radio items!