Use `SharedState` for build dispatch
When looking at the build frontend code, I noticed that we always pass every single field of the state to the build dispatch:
```rust
let build_dispatch = BuildDispatch::new(
...
&state.index,
&state.git,
&state.capabilities,
&state.in_flight,
...
);
```
We can abstract this by moving `SharedState` into the build dispatch. The `BuildDispatch` then has only immutable fields and the `SharedState`. Since the `SharedState` is all `Arc`s, we can clone it freely.