Cleaned up simulator code -- no longer worries about agents reverting actionrecords, and leaves ownership of them to the agents themselves.

Changed the way that GetAction is called on agents -- instead of getting their actions simulataneously, the simulator now fully resolves one's choice
before asking the next. This will avoid cases where the agents have to exchange information about simultaneous action assignment.

Added resource_locks to the parameters passed to GetAction so agents can make informed decisions about what they need, and also so they do not need to track which resources they have independently of the simulator.