Allow excluding directories from clean during git sync

The git SCM module's sync method runs git-clean to ensure there are no
stray files in the working directory. It includes the -x option, which
causes git-clean to remove files normally ignored by git.

This commit causes the sync method to check the :git_clean_exclude
setting for a list of files or directories to exempt from being
cleaned. This is useful, e.g. if you set a :build_script that produces
files that would normally be ignored and thus cleaned, but could
otherwise be reused.