Add hilite_peaceful option

Monsters that are peaceful but not tame can be highlighted in the same
way as pets if this is enabled (default off).

This extends and is split off from the following NetHack4 commit:

Track player's knowledge of locked/unlocked doors, draw it onscreen
Alex Smith <ais523@bham.ac.uk>
599c3d156cdb89239ec9b317bb2832290c00d34f
Update map immediately for hilite_pet option

... and also the new hilite_peaceful option.

This bug also exists in upstream NitroHack.

This bug also exists in NetHack4.
Increase compression of NH4 binary blobs in logs

zlib's compression levels range from 1 (fastest) to 9 (best), the
default being 6.  This cranks it up to 9, which has no noticeable impact
on play or replay speed, and saves 10-30% on the huge log filesizes
(more with games with many long actions like running, travel and
autoexplore), according to my very unscientific testing.
Fix fleeing monsters getting stuck in corridors

This fixes the bug where a monster that approaches the player on top of
an active Elbereth engraving will "turn to flee" and then sit there
idly for half a dozen turns before actually moving away.

The bug itself is due to the monster movement logic in m_move() having a
very high chance of ignoring potential moves if they match one of the
monster's last 4 (MTSZ) positions that are stored in its mtrack field.
This fix causes monsters to forget those 4 positions at the moment they
begin to flee so they can do so freely; this fix may have other subtle
effects, e.g. pets that can't be displaced in shops use fleeing logic to
move out of the player's way.

In the case of a monster moving towards the player on Elbereth and
fleeing, the chance that the space they came from being ignored as a
potential move is rn2(4 * 2), where 4 is a fudge factor and 2 is the
number of eligible adjacent moves in a straight corridor; the latter
factor decays for older steps.  The chance to ignore the last 4 stepped
spaces gets even higher when the monster is out in the open: as high as
rn2(4 * 8) in fact!

Contrary to popular belief, the monster is NOT trying to move into solid
stone; mfndpos() does its job and only lists eligible moves.  Also, when
the player retreats in a corridor with a monster stuck like this, the
monster moves towards the player NOT to attack them, but because it
thinks it's the only move it can make.

This bug also exists in vanilla NetHack, upstream NitroHack, UnNetHack
and NetHack4.