salt.utils.gitfs: rewrite locking code
salt.utils.gitfs: rewrite locking code

This does a few things:

1. Introduces the concept of a checkout lock, to prevent concurrent
   "_pillar" master funcs from trying to checkout the repo at the same
   time.
2. Refrains from checking out unless the SHA has changed.
3. Cleans up some usage of the GitProvider subclass' "url" attribute
   when "id" should be used.

saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt