chore: remove fake root topological task nodes (#5828)
### Description
This removes fake task graph nodes of the form `___ROOT___#task`. These
were only added due to the fact that we use `___ROOT___` as the root
node in both the task graph and the package graph. This would then cause
`___ROOT___` to appear in the [downward
edges](https://github.com/vercel/turbo/blob/main/cli/internal/core/engine.go#L383)
and then we construct a task id to insert into the graph.
To avoid this we simply only consider downward edges that *aren't* to
the root node. This results in leaf nodes now getting a dependency on
the `___ROOT___` node instead of the inserted `___ROOT___#task`. This is
how we handle this in Rust as well.
### Testing Instructions
Updated integration tests show that we no longer add `___ROOT___#task`
nodes to the task graph.
Closes TURBO-1275
Co-authored-by: Chris Olszewski <Chris Olszewski>