Separating the diffsync and restsync from each other.

- the main motivation for this is to make it easier to inspect the code