Make explosions dynamic, generic the fuck out of collision tracking

Explosions now use a formula to calculate their size modeled after the
original code (small, med, large, huge)
Collision tracking uses template magic to make callback methods
strongly-typed