Simplify debug_monspells() (|amethyst)
Remove (hard-coded) command keys from door descriptions.

It's not necessary for doors in particular to have these in their descriptions.
Simplify debug_monspells a bit.

Removing a sign warning in the process, as well as a bounds error
that would occur if a monster book ever had NUM_MSTYPES as a value
(a bug for sure, but no reason to stomp memory).

This relies on (monster_type) 0 not being a valid monster, but so
did the old code.

Constify a few things too (but not systematically).
Clarify Shadow Creatures' description, bring back "Abyssal matter".

The previous wording implied that the monster's items were permanent
(well, at least that's what I thought when I first saw it). It also
sounded a bit like it summoned monsters that were copies of ones you
could see; hopefully this is a bit clearer.

"Abyssal matter" was changed because it apparently implied that it
should be unholy (back when the spell was unholy), but I personally
like the flavour and don't think anybody would think that if one didn't
know that the spell used to be unholy.
Don't waste time casting Sublimation of Blood when at max MP.

I guess you could have used it with PbP...?
Add options to checkwhite and unbrace to examine only changed files

The -m option will have them use git diff-index to get a list of files
different between the index and the tree and then check only these
files.
Check for tabs in Perl and shell scripts

Including .pl and .sh (specifically excluded previously), as well as
files in util/ without an extension (previous all extensionless files
were ignored).
Fix whitespace in scripts.

Ourocheckwhite, the serpent that eats its own tabs.
Document a clua function
Make Ru redirection play better with friends

You will no longer redirect attacks to your buddies.
Add type-safe bitfield enums, use them for SPTYP_*.

enum_bitfield<E> holds a bitwise or of enumerators of the enum E.  It
allows combining Es with | and &, while preventing mixing in arbitrary
integers (or enumerators of the wrong enum).  The class converts to an
integer of the appropriate type.  The function bitfield() constructs an
enum_bitfield of the appropriate type without having to specify the
template parameter (much as make_pair() does for class pair<S,T>).

See 035df76 for an example of the type of problem this is intended
to prevent.

Unfortunately, an enum_bitfield cannot be initialised with FLAG_FOO |
FLAG_BAR, as that is just an integer and would defeat type safety.
Instead, initialise with one of:

   { FLAG_FOO, FLAG_BAR, FLAG_BAZ }
   bitfield(FLAG_FOO, FLAG_BAR, FLAG_BAZ)
   bitfield(FLAG_FOO) | FLAG_BAR | FLAG_BAZ

Note that bitfield(FLAG_FOO) | OTHERFLAG_FUM (where OTHERFLAG_FUM
belongs to another enum) is still legal; however, it gives an int
of some sort and not an enum_bitfield, so cannot be used to initialise
an enum_bitfield.

TODO: make as much of the class as possible constexpr so there is no
added runtime cost (in particular, for the multi-argument constructor,
which currently uses nested delegated constructors).
Make some spell type functions more type-strict.

It would be nice if there were a more type-safe way to iterate over
all the enumerators.
Don't crash when generating randbooks
Add a system #include, and checkwhite.

GNU libstdc++ and LLVM's libc++ worked anyway, since several other
system headers pull in <type_traits>.

[skip ci]
Simplify.

Also placate unbrace by not writing return (expression).
Remove skill_set_iter.

It wasn't even a const_iterator, so several functions unnecessarily
rejected const skill sets.  Use range-based fors where possible, and
auto in the single case that requires an iterator.