Fiddling with Controller some more.  The 'singleton' behavior can be turned off when needed, so now a controller can return a new controller, and a controller can be cleared without breaking the simulation attribute on the simulation objects.