Interim commit as there's been *loads* of changes.

Too many to list them all, but it’s primarily UI stuff…
- Making the whole add/remove behaviours, select agents and so on work
dynamically without any hitches.
- Fair bit of restructuring (again) to crystallise the design a little
bit.
- Not too much on the 3D side of things this time.