Allow for event based engines
Current engine uses by default, and can only use COMMAND_STREAM_TYPE.SEQUENTIAL which means the stream of command sent by agents are aggregated together and all sent to the design's update function, effectively creating a turn based engine.
Proposal to add in COMMAND_STREAM_TYPE.PARALLEL which means the stream of commands sent by agents are stored into a queue as they are sent and the engine sends to the design x commands at a time.
Each time a set of commands are processed, every agent is / (should be) sent an update (asynchronously). This means that bots can be working on out of data information if they don't wait for the next update (which can also be a bad move).
Also means kits may need to handle several rounds of new updates before continuing if the bot spent too long on one command.
Issues:
- different languages run at very different speeds, making python a very poor choice and c++ a good choice. This could possible be addressed with looking into running a script automatically measuring how much slower a program e.g. sorting is and slowing down all faster programs by a factor.
- could be very I/O intensive, with more match updates sent to all agents