Fix null level uses in mk_mplayer()

This bug also exists in upstream NitroHack and NetHack4.
Use correct level in mk_artifact()

This bug also exists in upstream NitroHack and NetHack4.
Use right level in m_initthrow()

This bug also exists in upstream NitroHack and NetHack4.
Pass right level to mksobj()

Without this, crashes can occur if mksobj() ever tries to use the lev
argument it's passed.  This fixes the mksobj calls in:

 * mongets()
 * mkmonmoney()
 * m_initinv()
 * mkcorpstat()
 * mk_mplayer_armor()
 * mkroll_launch()

Most of the fixes assume that objects made for monsters should be made
on the same level as that monster, which seems like a safe bet.

This bug also exists in upstream NitroHack and NetHack4.
Fix buffer overflow with long msgs sent to pline()

Without this fix, overly-long messages such as feedback from max-length
wishes, causing a buffer overflow, stack smashing, memory corruption,
etc.

This bug also exists in upstream NitroHack and NetHack4.
Fix unrestored door locked/trapped status

Oops, my bad.  This was being saved fine, just forgot to restore it too.

This is meant to go with commit cc784daa52 (NH4: Track knowledge of door
locked/trapped status).
Record player's wish input, unmangled

The wish parser may alter the player's original wish input, leading to
the history listing recording said wishes with certain parts cut off or
excluded.

This bug also exists in upstream NitroHack.
Add cornuthaum charisma bonus to calc_attr_bonus()

Cornuthaums are supposed to give +1 charisma to wizards and -1 charisma
to everybody else, but NitroHack's calc_attr_bonus() doesn't account for
this.

This bug also exists in upstream NitroHack and NetHack4.
oprops: Magical object properties (from GruntHack)

e.g. short sword of fire, bow of detonation, cloak of magic resistance
and reflection.

Properties can be found on weapons, armors, amulets and rings.
Properties can be found randomly or wished for (with restrictions).

This is a huge change, see doc/README.oprops.md for full details.
CS1436: Ensure "Elbereth" status is always updated

The duplicated init for was_on_elbereth is ugly, but there doesn't seem
to be any one function for both starting and restoring games that runs
after level is init'd, otherwise I'd have used it for the fix to the
notify_levelchange() on restore bug too.
NH4: Use more portable Unicode characters for map

 * 'black square' for open doors
 * 'plus-minus sign' for trees and dead trees
 * 'pilcrow' for fountains (easier to see than 'top-half integral')
 * don't use 'dagger' for grave
 * 'double cross' for webs
 * vertical/horizontal rule for swallowing/explosions instead of eighth
   blocks

Change the characters we use to ones that render portably
<ais523@nethack4.org>
524a57f9bb0072d35123523b3ab869816e09a480
oprops: Merge properties regardless of known-ness

... and merge the known properties correctly.

Without this fix, when several arrows of (unknown) fire miss and then
hit a monster, the ones that hit would have the fire property
identified, but not the ones that missed, and would thus not stack, even
if they were obviously originally from the same stack.

This does lead to players magically knowing the properties of a newly
found object if it stacks with an existing object with matching
properties that are known, but that's a quirk I can live with.
NH4: Fix fruit chain restoring in reverse order

Yet another source of replay warnings.  Problem spotted Sean Hunt, but
this uses an original fix since the NetHack4 fix is faulty.

Fix a number of save/replay consistency bugs
Sean Hunt <scshunt@csclub.uwaterloo.ca>
acf2e2f4f27f90ba6745bba7003d1e325c97abe4
NH4: Restore old options as intended after replay

If program_state.viewing or program_state.game_running aren't unset by
the time replay_end() is called, the nh_set_option() calls within it
won't restore the game options saved from before the replay as they
should.

Fix a number of save/replay consistency bugs
Sean Hunt <scshunt@csclub.uwaterloo.ca>
acf2e2f4f27f90ba6745bba7003d1e325c97abe4
Fix (war)horse appearing as a pony when ridden

Looks like horses and warhorses have their mnum set to pony for some
reason, which display_self() was all too happy to use.  Using monsndx()
makes them appear as they should when being ridden.

See also commit 2cc8a319e1 (level genocide treats chameleons like normal
geno), which also shows a difference between using mtmp->mnum and
monsndx(mtmp->data) for shape changers.

This bug also exists in upstream NitroHack and NetHack4.
Ensure max engraving length is within BUFSZ

This prevents overzealous memory allocation by newengr() if a bad length
is saved or restored for an engraving.
Fix engravings list restoring in reverse order

Yet another source of replay warnings.

This bug also exists in upstream NitroHack and NetHack4.
Interrupt running/travel/autoexplore when confused

Running, travel and autoexplore don't count as occupations, so the call
to nomul() in stop_occupation() never happens for them without this fix.

Reported by Janis Papanagnou on rec.games.roguelike.nethack:

    http://bilious.alt.org/rgrn/?128555

> An IMO flaw in Nethack is that if you travel with the '_' command and
> an umber hulk confuses you, the game continues with the travel command
> execution instead of aborting it. That way it may be disastrous if you
> travel on Medusa's level and a newly created random umber hulk appears,
> leading you straight into the water without possibility to just stop.
> If, OTOH, you do a command repetition '.', waiting for, say, blindness
> or confusion to wear off, this will be interrupted.

This bug also exists in vanilla NetHack, UnNetHack, upstream NitroHack,
NetHack4, and probably pretty much every other NetHack variant ever.

Fixes #81 on GitHub.