New spell: Singularity.

L9 Tloc. Places a monster like Fulminant Prism that draws creatures that are
within its radius closer to itself, pulls harder the closer they are, and
deals damage to creatures that are sufficiently close. Lasts ~6-8 turns,
dependent on power.

Doesn't warp allies.
Can a message.
Monster-castable Singularity.

Admit it - the moment you read "will warp *you*" in the commit messages,
you knew this was coming.
Implode singularities if their caster dies.

Not going to be tremendously relevant yet, but if we get, say, liches
casting the spell, it will be important.
Spellbook: the Plane Papyrus.

It is a rare Translocations book containing the high level spells from
Warp: Dispersal, Controlled Blink, Disjunction, and Singularity. It also
gets Malign Gateway (which is level 7 Summoning/Translocations).

The Book of the Warp loses these spells, and gains back Recall (which
was removed to make room for its other glut of spells) and Summon
Forest.

Wizardry loses Dispersal, with no replacement. Rethinking the contents
of that book altogether seems to be a good idea.
Generalise collision damage; use in more places.

Knocking something back into a solid feature or another creature now
hurts it; this includes Force Lance, the fan of gales, and other things
that knock you back.

This also handles cases of multi-square knockbacks more gracefully.

Possible extra case that isn't handled right now: trampling.
Tinker with Force Lance.

It is now L4 Conj/Tloc and appears additionally in the Book of the Warp;
it is slightly more accurate (as accurate as IMB, which I think is
acceptable based on its short range), and can knock back enemies up to
four tiles at max power (50% chance). It's also more likely to push
heavier targets at higher power.

Flying targets are more impacted - they have nothing to brace themselves
against.
Don't move stationary things with singularities.
Init ench_power properly for monster beams.

Relevant for Force Lance.
Fix zappy ench_power assignment.

I have no idea if this will break something else, but I've checked the
uses of ench_power and it seems to be safe.

TODO: rename the field to "power"?
Let actor::hurt accept a kill_method_type, source, and aux.

...which it then passes along to ouch() if it's the player.

Lets us merge some player and monster handling and fix some death
messages (Freeze, shock serpent discharges, ...)
KILLED_BY_COLLISION, for collision death messages.

Collided with an orc (7 damage) ... caused by a deep elf mage

This is deliberately separate from the previous commit in case we only
want to land the former.
Give singularities' direct damage a proper death message.

Killed by gravitational forces
... invoked by a singularity
... created by an ancient lich
 (23 damage)

or,

blasted by a singularity (gravitational forces) (created by an ancient
lich)

Possibly the "invoked by" could be changed somehow, but this suffices.
Nerf Singularity damage further.

In my own testing, it was significantly more powerful than other level 9
damage spells. With this roughly halving of the direct damage output, it
seems roughly as capable as other level 9 spells at dealing with large
crowds of enemies.