Turbopack: fix and finish immutable tasks (#80996)
### What?
Fixes the problems with the implementation of immutable tasks, adds tests and debug asserts to ensure it's working.
* There was some confusion between children and dependencies. Children are not involved with immutablility, only dependencies are.
* Opt out of immutablility for reading collectibles and for getting an invalidator.
* Removed `#[turbo_tasks::function(invalidator)]` and the logic of discovering statically immutable with macro code. It won't work as local tasks are invisible and can cause dependencies
Follow-up changes:
* Technically immutability could be per cell instead of per task. A task produces immutable cells until it does something that depends on mutable cells or other opt-outs. It could be `RawVc::ImmutableCell` and the immutable flag would be only in `InProgressState` and not on a task.