Simplify slightly.

Has a huge lines changed count since it removed a level of indentation;
very little actual changes.
Simplify, based on SPELL_NO_SPELL never being in a monster spell list.
Pass slot flags farther, make sure 'priest' and 'wizard' get updated.

Should be no significant gameplay changes, except that cacodemons should
be able to dig while silenced in some places where they couldn't (though
maybe I missed something that let them anyway). Hopefully this takes
care of most of the rest of the assumptions in mon-cast.cc that actual
spellcasters only cast real spells, but there may be more elsewhere.
Ditch SPFLAG_INNATE.

It's handled quite well by MON_SPELL_INNATE now.
Make M_SPELL_NO_SILENT a slot flag.

Just for fun (and as a test), let Rupert berserk even when he's silenced!
Fix a problem with some monster_spell iterators.

I admit that I don't know much C++, but before this Rupert would sometimes
cast Confuse in silence (since Paralyse would be removed, the iterator
would go back to the start, then it would be incremented and Confuse
would be skipped in the remove-if-silence-disallowed check). I'm fairly
sure that this is legal, at least, and the compiler gave me no warnings.
Replace the end-of-book non-slot with a macro.
Don't check if an unsigned int is >= 0