Use ExportChanges() in runtime.Diff()

This code was duplicated in two places, one which was unused. This
syncs the code and removes the unused version.
Add tests for the changes detection code

This adds 3 tests:

Verify that ChangesDirs() returns nothing when run on a copy of the
same directory.

Verify that various mutations of a directory get reported with the
right changes.

Verify that ExportChanges() + ApplyLayer() of the above mutation gets
an identical directory.

Unfortunately the last test is disabled because it fails in multiple
ways atm. But I want to get it in so that we can fix it.