Implements more sophisticated explosion animation/sound system

Explosions can now use different art for various situations (ground, water, air, ground target hit, water target hit, air target hit).
We have Enum.HasFlag now, so we should start moving towards using that instead of a bunch of custom methods that all do the same thing.