Clean up the workspace after every checkout by deleting all untracked files and directories,
including those which are specified in .gitignore.
It also resets all tracked files to their versioned state.
This ensures that the workspace is
in the same state as if you cloned and checked out in a brand-new empty directory, and ensures
that your build is not affected by the files generated by the previous build.