Split monster::search_spells, simplify.

Rename search_spells to search_slots and reimplement it with any_of.
Make search_spells into a wrapper that uses a predicate on spells rather
than slots, allowing things like "search_spells(is_unclean_spell)".