Add option tile_player_tile and show player weapon and shield

The option tile_player_tile can be set to use a monster's tile instead
of the conventional player tiles for the player doll. The value
playermons will duplicate the behavior of tile_show_player_species =
true, using the player species monster tile. Values with the prefixes
mons: and tile: can be used to set a base monster or a specific
monster tile to use for the tile (mostly useful for using tile
variants). For instance, use the following in an rc file to use the
deep elf demonologist tile:

    tile_player_tile = mons:deep elf demonologist

and use the following to get a hydra tile with all heads drawn:

    tile_player_tile = tile:mons_hydra_7

All forms of these options show the player's weapon and shield on the
tile, and in the correction location for those tiles that have mcache
entries or otherwise look fine with default offsets. Many tiles don't
have mcache entries with these offsets yet need them, and will show
the weapon and/or shield in strange (but sometimes amusing!)
locations on the tile. For these tiles, we can add the offsets as good
values for them are found.

(cherry picked from commit d9090ed7355b15b51f2dd71cf9e3c84ff9e1301b)

Conflicts:
	crawl-ref/source/tilepick.cc
Some weapon and shield tile offsets

For various monster tiles that are player species, and some other
monsters.

(cherry picked from commit 0411c40f47701b83951023093f36ee04d7248071)
Fix a crash for monsters without mcache entries

(cherry picked from commit 932a93ed133776fb22c9af2cd5f5f6f82d7e015b)
Add a javascript semicolon, clean up whitespace, and unbrace

(cherry picked from commit f476f6a0203d2a2d36debd7bb45b7ac2fad11133)

Conflicts:
	crawl-ref/source/tilepick-p.cc
Properly reinitialize tile_player_tile when the value changes in-game

(cherry picked from commit b56323356fcc42f066be7cb0ebb2d3b2fd9d084f)
Various monster tiles (roctavian, 8928)

(cherry picked from commit 248e4d496790795ebd64a64bc85083c1a9a546d0)
Fix tile_player_tile so that it can use all player tiles

This change uses a dummy monster to fill in the monster info for
mcache and sets the tile as a property. Previously we required there
to be a base monster for tile, but this prevented use of e.g. the
Cigotuvi's Monster tile. Any valid tile in the player tileset may be
used, so the requirement of a tile name beginning with "mons_" has
been dropped.

(cherry picked from commit 63e0f098a3f7a1016cc40506ae3be947e482b79e)
Weapon and shield offsets for various monster tiles

(cherry picked from commit 150483d846104a0de5ca75c74c2f49fe6b8f09f9)
More monster tile weapon and shield offsets

Thus my summoner can fully evolve to its final form.

(cherry picked from commit f1c67de80f896ac904b9db74fadea2c008a14cf8)
Merfolk tile offset adjustments

(cherry picked from commit 7c2ca6ffec3b64a1cda27f7a673ec1b55cdf9c45)
Allow mon_glyph = <mon1>:<mon2>.

(cherry picked from commit 279ce45670bbd03c6ed1e65b5eb73679973a4a49)
Deduplicate code.

(cherry picked from commit 6c89faa2de9de39c2ee8d5e1edafb50f342f90c4)
Allow in-game updates mon_glyph to actually change the glyph

Previously in-game changes to mon_glyph via e.g
crawl.setopt("mon_glyph = ...") were changing the internal option but
not updating the monster glyph data, so the option change had no
effect. We now update the monster glyph data appropriately after the
option is changed. This is most useful for changing the player glyph
in-game with "crawl.setop("mon_glyph = player: ...")

Monster glyphs can also be changed in-game, but monster colours are
stored upon monster creation currently, so changing the setting only
affects newly created monsters. This will be fixed in a future commit.

(cherry picked from commit 88780a75e449d79009c087d0ef25ed0821f14458)
Options tile_weapon_offsets and tile_shield_offsets

These allow setting custom weapon and shield tile x,y offsets for use
with tile_player_tile. If only one offset pair is set, the other will
be taken for the hard-coded entries in mcache if they are available,
so the player doesn't have to figure out e.g. weapon offsets when they
only want to adjust the shield.

(cherry picked from commit 281755fa9cc62df5567c8fd07edca72bacca117f)
Properly check conditions for using weapon offsets in Tiles (#9021)

This bug was such that it only appeared to happen on some operating
systems. Invalid weapon tile offsets were always being used, instead
of only when using a custom tile and actually having offsets through
mcache or player settings.

(cherry picked from commit 865caf8b2081e702cc73c6b54254ba4ed428be76)
Add weapon/shield offsets for MONS_MISSING_GHOST

I could hardly not support my own tile, now could I?

(cherry picked from commit 1e445a6f62d27c6d5ad062c4277bc7f0f0d5c89a)
Move Frances' shield to her left hand for player tiles.

(cherry picked from commit 6a05d28928b073f58bde5a0ea42046398237b742)
Don't allow chimera zombies etc.
(cherry picked from commit 631da9cea2a03e6ff37ba1405fd73306495b0c39)
Ensure random zombies get compatible bases (#6070, #8275, #8457)

Besides spider skeletons from 'place:Foo skeleton', this also avoids
picking M_NO_GEN_DERIVED and non-natural base types.
(cherry picked from commit 5b9bb91dd021090132b3d8dabf6bb3387deb3156)
Remove a now-unused function.
(cherry picked from commit eea055a8fb1c9a1925625d17acf0046a456a4dc2)