represent runner environments as tree
use unique environment id
Merge branch 'rework_runner_environments'