Overhaul the undo system a bit.
Make BoomSpell undoable