Funnel recipe

My first contribution!
more recipes

I put the formatting back into the funnel recipe, added a way to make an
antenna out of scrap, and added a recipe for a gallon jug.
leather funnel

Added a leather funnel, with the same stats as a makeshift funnel. It
can be crafted at survival 1.
Hide the live-window without the force parameter.

This prevents the already hidden window from being erased and refreshed, which overlays with the display of the messages.
Fix utf8_wrapper::shorten so it does what it says in the documentation.

Previously it did *not* operate on the display width at all.
Fix uimenu writing long menu entries.

Fix the display bug visible in the wish item menu:
Fix same display bug in wish monster menu:

The w_info with the monster information was a cell too far left. It would override the ellipsis of shorten monster names like "giant black widow spider{ling}". The "ling" does not fit the space.
Fix display bug in horizontal vehicle window:

The offset where to start printing the name of the most damaged part was calculated and added, but the available width was not reduced. Therefor fold_and_print assumed it could fit the whole name on one line and only the curses system did the forced line break.
Now the offset is also subtracted from the width and fold_and_print recognizes it must be folded onto two lines.

Also the following entries in that window are shifted when fold_and_print prints on several lines instead of only one.
Fix display bug in item info window:

Appears for example when picking up an item with a long list of body parts that is covers (blanket).
The list of covered body parts would be wrapped by curses in the middle of the words and the next entries of the item description would override the lines. They don't recognize that the previous entry has consumed several lines at once.

Use fold_and_print to fold and ... uhm ... print, and increase the line number if the function printed more than one line.
gallon jug fix

Fixed a crash upon loading a save, because I didn't know how multiple
copies of recipes worked.
Remove indirect references to a local object.

This is so wrong:
void foo(player*p) { g->u.bar(); }
This is correct:
void foo(player*p) { p->bar(); }

Disclaimer: sometimes actually the player is meant and not the this object, like in player::auto_find_hostile_target, but those cases are rare.
Place spawn point in mapgen, not the actual monster.
Fix fire starter bug
Remove references to g in mapgen.cpp

Use the provided parameter zlevel instead of g->z
Use map::abs_sub instead of g->foo
leather funnel message

I added a message in iuse.cpp, which should fix the bug with the leather
funnel.
Merge remote-tracking branches 'dda/pr/9746', 'dda/pr/9748' and 'dda/pr/9749' into dda-master

* dda/pr/9746:
  Fix display bug in item info window:
  Fix display bug in horizontal vehicle window:
  Fix same display bug in wish monster menu:
  Fix uimenu writing long menu entries.
  Fix utf8_wrapper::shorten so it does what it says in the documentation.
  Hide the live-window without the force parameter.

* dda/pr/9748:
  Fix fire starter bug

* dda/pr/9749:
  Remove references to g in mapgen.cpp
  Place spawn point in mapgen, not the actual monster.
  Remove indirect references to a local object.
Fix placing monsters in defense mode:

Don't call monster::setpos on a not yet placed monster.
Check spawn point for emptiness via game::is_empty before placing the monster there.
Fix display of prices in defense mode:

Using the format %.2f for floating point display with (always) 2 digits behind the decimal-point.
Move enumeration special_game_id into enums.h

Add the same time erasing the need to include gamemode.h into game.h and thereby into *every* major source file.
Print defense mode cash parameters in dollars, not cents.

Also increase the maximal allowed values there because the default values are already above those limits.