Cache gitfs environments

This commit improves performance by not repeatedly looking up the
list of available environments whenever they are needed, and instead
writing them to a cache file whenever the fileserver is updated (and
changes are found). envs() will prefer the cache if it is available.
Merge pull request #9916 from terminalmage/2014.1

Cache gitfs environments (2014.1 branch)