[WIP] Rewrite driver code, move to driver.py, introduce system builder classes

Hey,

This is my (very initial) implementation of `SystemBuilder`.... very WIP, will continue to implement the ideas we discussed.

Thanks
I might have some code to use here in TrustButVerify not sure if this helps or not...

```
        n_chains = len(list(fixer.topology.chains()))
        chains_to_remove = np.setdiff1d(np.arange(n_chains), self.keep_chains)
        fixer.removeChains(chains_to_remove)
```