run: no need for the root container
bagGroup: doesnt need the model passing into the ctor, just contents to populate()
bagContainer: dont pass the model into the ctor, just into populate()
bagContainer: lazy build the sub groups from the model
bagContainer: rename bags->groups
model: use an iterator so that we can maintain order of bags
run: move backpack building to its own function
model: one eventStore per instance