new scheme for prohibiting casting; split card issues fixed

Prohibiting casting an object based on that object's characteristics is
now done via a new class PlayProhibition, which is used when generating
cast actions and when running events that cause you to cast an object.
PlayProhibition checks Characteristics rather than GameObjects, in order
to cause prohibitions that only affect one half of a split card to work
properly.

CAST_SPELL_OR_ACTIVATE_ABILITY invocations on cards and abilities have been
removed.