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.
Ok. We (myself or someone else) will help you resolve that problem before we merge this, so lets focus on getting everything else into shape first.