Custom Warheads refactor

Split out just the refactor and work for the Custom Warheads.

This branch contains no changes to the yaml files other than what the UpradeRules does.

A short guide to how new custom warheads can be defined can be found here: http://pastebin.com/xUg2bfT5
Though the main purpose of this pull request is for regression testing.

Will allow functionality requested in #5436.

Supercedes  #5882. So implements functionality requested in #5618.

Lays groundwork for requests in #4363, solves some of them. (CreateSFX, DamageActor).

Lays groundwork for #2838.
@Phrohdoh has already done a lot of work towards mind control.

Once this pull request is accepted/complete, I'll create a new pull request for the DisabledByWarhead additions that build atop of this.
Off in what sense? (I.e. What would you like me to do?)

Would it be better if I...
Create a second interface IDamageWarheadInfo (that inherits IWarheadInfo) and has the additional function of .GetDamage(Actor victim, Actor firedby).
Add an void DoImpact(Actor victim, Actor firedBy, float modifier); to IWarheadInfo that allows you to impact only a specific actor.
...?

Then I could replace these checks with actual calls of interface functions.