Refactor how monster death are handled:

Remove game::kill_mon and move game::explode_mon into monster class.
Replace calls to game::kill_mon with either monster::die.
Remove calls to game::kill_mon when the previous monster::hurt returned true. That indicated that the damage to the monster actually killed it.
This is now done directly in monster::hurt. Note that not all calls to monster::hurt actually checked the return value.
Replace game::explode_mon with either monster::hurt(9999) - huge damage to trigger the exploding, or direct calls to monster::explode.
monster::explode can also be called on dead monsters!

Merged both monster::die functions into the single function that is defined in Creature.

Added source creature parameter to monster::hurt.

Explode-on-overkill is now done in monster::hurt.
Make monster::dead private and add is_dead function.

monster::die is now called exactly once, further calls are ignored.
monster::dead is only set to true in that function.
*all* effects of a dying monster are handled in monster::die.

Added a function to class game to increase the kill counter.

game::cleanup_dead now only removes the monster object from the creature tracker, nothing more.

ranged.cpp: use monster::pos(), which already returns a point.

Note on the removal of the is-dead check: game::mon_at / Creature_tracker::mon_at never return the index of a dead monster, so returned index is always for a living monster, so the check is not required.
game::zombie() / Creature_tracker::find still return a dead monster.

The correction of game::last_target is now in game::remove_zombie so it is always corrected (remove_zombie is called from other code as well, not just from game::cleanup_dead).
Combine code from butchering and monster exploding

Both places create chunks of the "monster body", in other words chunks of flesh/plant matter.
The logic that determines the item type is now in mtype and not replicated in both functions.