Drop `preloadClosure` from `UnitState`
## Summary
This `preloadClosure` in `UnitState` seems to be completely unused and always set to `emptyUniqSet`.
```haskell
-- | The set of transitively reachable units according
-- to the explicitly provided command line arguments.
-- A fully instantiated VirtUnit may only be replaced by a RealUnit from
-- this set.
-- See Note [VirtUnit to RealUnit improvement]
preloadClosure :: PreloadUnitClosure,
```
Removing this field has a fairly large knock-on effect in simplifying `UnitState`, getting rid of `improveUnit` and similar functions.
It is confusing why backpack works at all at the moment when `preloadClosure` seems to be completely unused and part of a fairly complicated precondition for unit instantiation.
I suspect, backpacks current implementation (commit 6779bb0c2d2784182465337ba5e94b7cd8810f2b), performs the ad-hoc instantiation in the `UnitDatabase` directly, circumventing the `UnitState`, but I am not sure. All I know is that `preloadClosure` is `emptyUniqSet` in all code paths in GHC I am aware of.
Perhaps someone can correct me, but I think it is safe for GHC to drop `preloadClosure` from `UnitState`.
issue