Lots of fun updates to Attack and Unit

Attack is now more complicated, but it's sadly necessary for a more
complete picture of the attack.  Unit now has a Fight function and a
Unit can contain a ModelGroup, which can contain a non-whole value of
models of a given type.