Allow tuples as TaskInputs (#3692)
(I would have created a Linear issue for this specifically but Linear is down)
This PR allows the use of `(A, B, ...)` as `TaskInput`s. This means that the following are now valid `turbo_tasks::function` signatures:
```rust
fn do_the_thing(path: (FileSystemPathVc, BoolVc)) -> SomeVc;
fn parse_headers(headers: Vec<(StringVc, StringVc)>) -> HeadersVc;
```