Allow different agent types to be present in the same simulation.
All agents of the same type reuse now the same controller for better scalability.
Added some extra logging as well.