Improve toji exception handling

Exception handling for toji is complicated by the concurrency used when executing container commands. It currently just raises the first exception it gets, meaning we loose potentially relevant information about the state of the other containers. This is resolved in two major ways:
 1. Exceptions raised by the same sync group are bundled together, so all the tracebacks are available.
 2. The status of any touched containers (including ones from the previous sync group) are checked, and logs are included with the bundle if there is an error status code.

2 will only be printed from init command at the moment, as it's possible to have some very long logs outside of the first few seconds of container existence.