Disable jenkins and remote builds is tree is dirty

Remote builds and jenkins builds rely on git-bundle, which creates an archive
of the repository as it stands at HEAD. Any uncommitted changes to source are
not retained in the git-bundle. This means in the case of a dirty tree, remote
builds do not actually accurately reflect the local repository. Additionally,
the suffixing of "-dirty" to the version string of builds from dirty source
trees seriously disrupts the jenkins workflow, which assumes that to retrieve
any package, you can check out the commit of that build. In the case of a dirty
build, we cannot simply check out the dirty tree that was packaged, because we
have no idea what the changes were. Not only that, but while the version string
contains "-dirty", since no uncommited changes were actually packaged, the
built package is of the last sha, which means the version string is actually
inaccurate. We can avoid all of this mess by simply preventing remote and
jenkins builds if the source tree is dirty. This commit adds a utiity method to
check if the source tree is dirty, and uses it to this end.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>