Support SPTYP_FIRE | SPTYP_CONJURATION syntax again.

By defining an operator| on spell type flags to produce a bitfield, not
an integer.  Likewise operator& and operator~, as well as variants of
& and | that take a flag on the left and bitfield on the right.

It would be nice to do this as a template, but we wouldn't want the
template to be instantiated for every enum, only some bit flag enums.