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).
So ```ValidImpactTypes: Ground, Hit, Water, Hit, Air``` would give the same result as ```ValidImpactTypes: Ground, GroundHit, Water, WaterHit, Air``` would with my current approach? Or would it have to be ```Ground, Ground, Hit, Water, Water, Hit, Air```?

Anyway, if that's how it's supposed to work and I'm not misunderstanding something, I'm not convinced, to be honest. It might be more elegant from a coding perspective, but we should keep in mind how it looks to the 'end-user' (modder) and I still think my approach looks a bit more straightforward and easier to understand from a modders' perspective when looking at the yaml code.