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.
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
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.
Remove artifact.h from inventory.h

Move inventory::has_artifact_with into a lambda function inside of
player.cpp which already knows about the artifact item type.

This encapsulates the has-artifact logic inside the player class.
Move artifact-effect check into item class.

Use those functions to check for presence of evil artifact in handle_evil.