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).
You could use the bitfield approach here too: `ImpactTypes = ImpactType.Ground | ImpactType.Water | ImpactType.Air` for something that affects all three.  This won't work with the definition for Hit I just mentioned above, as this would be inclusive and the one above exclusive.