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.
Long line alert!  You should define variables for the damage and warheads on their own lines that you then pass in.