Positive Z-levels(WIP)

Since I want to add a second floor to the Rivtech facility, I need to get positive Z-levels working, since a lot of the base is already there.

After diving into the code(including that huge if statement in mapgen.cpp), I *think*, I know what needs to be done to get it working.
Merge branch 'master' of https://github.com/CleverRaven/Cataclysm-DDA into positive-z-levels
Added sky terrain, sky overmap
Finished up, everything seems to work, as I want.
Added 3-D version of Motel
Added 3-D version of Office Tower(empty) thanks to acidia
Merge branch 'master' of https://github.com/CleverRaven/Cataclysm-DDA into positive-z-levels
Split recipe json

Splits the recipe.json file into small easier to browse files by
category.   No more 31000 line long recipe.json.
Changed t_sky to t_open_air and changed the colours on them to make them more managable.
Fixed automap issue-apparently know up and know down are bad...
Transfered 3-D Buildings and made a mod.  Players will not be able to access new z-levels unless they use the debugger.
Reverted buildings back to their orignal settings.
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.
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