CS652: lev_comp: SporkHack r720,722,724,731,737-739,742

From the UnNetHack commit message:

 * Make get_location() handle irregular regions when a random coordinate
   is requested
 * Mess with the des-files[1]; randomize the amount of
   monsters/objects/traps, within sensible limits
 * Fix the impossible claiming we're comparing, when we're actually
   adding (ed: I fixed these error messages earlier when I added the
   code)
 * Add "selections" for TERRAIN and remove RANDLINE[2]
 * Add a new selection element floodfill(x,y) and a way to pick a random
   coordinate from a selection[3]
 * Add selection elements for circles and ellipses
 * Allow selection as DOOR position
 * New selection element "filter"[4]

[1] There are tons of little changes to many of the special levels,
particularly the quest levels, but also Mines and Gehennom.  It feels
like there are a few more monsters on average than anything else, but
not by too much.

[2] Level designers now have access to 'selections', which are sets of
coordinates on the map that can be manipulated, e.g. a randline
selection is made in the lava cavern levels of Gehennom to fill with
lava to form the rivers that cut the map in two.  That example is what
RANDLINE used to be for, so now it's gone.  Selections can also be
combined with logical OR using '&' (ampersand), or intersected with each
other with logical AND using 'filter(sel1, sel2)'.

[3] A floodfill terrain selection is used to find the coordinates of all
the street spaces in the Rogue quest start level to use as random
coordinates for monsters, for example.

[4] Intersects regions with logical AND; see [2].
CS653: lev_comp: Don't flip random mines levels

In particular, this stops the unwalled floor spaces that would sometimes
appear on the left of such levels.  This partially addresses issue #4 on
my GitHub repo; the problem still exists with e.g. random lava cave
Gehennom levels, since the flipped levels change doesn't account for the
slightly assymetric nature of NetHack levels.

According to UnNetHack, this is from SporkHack r752.
CS654: lev_comp: SporkHack r762,765,771,779,780,785,791

From the UnNetHack commit message:

 * Fix some split-room buglets (ed: not really, see [1])
 * Make sure the Monk and Priest quest portals have a clear place to be
 * Allow selections as coordinates for FOUNTAIN, SINK and POOL[2]. Mess
   with bigrooms. (ed: slightly randomized terrain for some bigrooms)
 * Fix a crashing bug when creating sinks, fountains or pools (due to
   trying to free null spovar) (ed: probably introduced with these
   revisions too, since I see no trace such a problem nor a fix)
 * Handle the "transparent" mapchar (ed: use 'x' in maps to mark spaces
   to not draw over on the existing map)
 * Handle the "invisible" mapchar (ed: How is "invisible" different from
   "transparent"? How is this different from the above?)
 * Don't flip the levels without fixed map parts[3]
 * Fix randomly generated mine-type levels having lit walls when it
   shouldn't[4]
 * Don't complain when trying to give inventory to non-existent monster;
   the monster may be gone legally

[1] The split room port is practically all original code.  If the code
from this changeset were used, this would fix split rooms always being
at the top or left of the level, which is already fixed in the new split
room code.  The changeset also moves the add_room() call for the second
half of the split room from before to after a topologize() call, but in
writing original working split room code, that call is already done by
the usual rooms-and-corridors level generator, so in practice it would
do nothing.

[2] create_feature() is removed, since the same thing can be done
internally by replacing the terrain of a single tile selection.

[3] This is a workaround for the ugly left-most walls in flipped
mines-like levels.  Compared to UnNetHack, Cav-fila gets this fix too.

[4] This adds a missing argument to lvlfill_solid() for the
LVLINIT_MINES case... one that has been missing for over 200 changesets
(since changeset 442)!  How this didn't break compilation for UnNetHack
and remain undetected for so long is a mystery to me...
CS655: lev_comp:Fix traps replacing stairs/ladders

create_trap() now checks to make sure it won't overwrite stairs or
ladders.

Compared to UnNetHack, the try count check and increment for the
checking loop is put before the stair and ladder checks, otherwise a
room filled with stairs/ladders will cause an infinite loop: the exact
case the try count is trying to avoid!

According to UnNetHack, this is from SporkHack r792.