This class holds the initialization data needed for the Terminal.
This data has to be passed from the UI Isolate where the TerminalIsolate
class gets instantiated into the Isolate that will run the Terminal.
The TerminalIsolate class hosts an Isolate that runs a Terminal.
It handles all the communication with and from the Terminal and implements
TerminalUiInteraction as well as the terminal and therefore can simply
be exchanged with a Terminal.
This class is the preferred use of a Terminal as the Terminal logic and all
the communication with the backend are happening outside the UI thread.
This class holds a complete TerminalState as needed by the UI.
The state held here is self-contained and has no dependencies to the source
Terminal. Therefore it can be safely transferred across Isolate boundaries.