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).
This now becomes
```if (!HasImpactType(ValidImpactTypes, impactType) || HasImpactType(InvalidImpactTypes, impactType))```