What todo with circular dependencies?
   a needs b
   b needs a

   - try to start them?
         status a: is_starting
         status b: not_set
      a wants b, so a service starter for b starts
         status a: is_starting, waiting for b
         status b: is_starting
      service starter for b sees that a is needed
      service starter for b sees that a is already being started
      service starter for b begins to execute b
         status a: is_starting, waiting for b
         status b: is_starting, executing "on"
      service starter b finishes
         status a: is_starting, waiting for b
         status b: FAILED | RESPAWN | ONCE
      service a continues
         b successful:  execute on
         b failed:      register / print that we do not start, because
                        b failed
   
      -> this would only catch possible deadlocks, if the dependency
         tree / status check is done dynamically
      -> in case of pre-building the dep-tree this situation must
         be concerned:
            - start both a and b?
            - or stop due to circular dependency?

   - Abort on detection of a circular dependency
      * possible without pre-calculating?
         - perhaps only with direct communication possible?
      * pre calculate
         - do not start that services?
