Split the Attack class into its own file.

It was causing a circular dependency between some headers.