Move `ForAllThunks` to its own file.
Move `ForAllThunks` to its own file.

`ForAllThunks` is currently unused, and the new version has a few improvements:
* For `Thunks` that have nested `Thunks`, e.g. `ConditionalThunk`, it invokes `fn` on both the parent `Thunk` and all nested children. The previous version would only invoke `fn` on the nested children.
* It discovers nested children in all `Thunk` types, including `AddressComputationThunks` and `CommandBufferThunks`.
* It uses more modern types -- e.g. `absl::FunctionRef`.
