TODO cycle min priority: 6

Check if this can be removed: No it is returned from getLinks
Changed semantic of the device state from connection to initialization as a device can be connected also before the FlowsMan instantiation and to remove the constraint between a device's connection and the engine life-cycle.
Merged the boolean paused with the EngineState.
Updated the semantic of the names in the IUserInterface.
Made order and renamed the sensors 'valves' data to an 'is listened' data.
Added an addLink overload so the user doesn't have to implement the ILink interface.
Added exceptions.
Changed get/setStreaming to is/setListened.
Changed global streaming to paused/not paused.
Documentation and ILink pruned

Removed the ILink interface.
Added documentation to the implementation.
Generalized the Status Event Callback.
Updates some minor things.
Changed the semantic of also IDevice and IOutput from connection to initialization.
Added an IOutputCallback to carry the state changes of the output.
Added OutputStatus enum.