vcsh configuration to handle collisions of files common to distinct vcsh
repositories using the sparse-checkout functionality of git.

Based on John Whitley's setup at https://github.com/jwhitley/vcsh-root

The patterns for the colliding files are in .config/vcsh/sparse-checkout and
a pre-upgrade hook is used to make vcsh repositories use it.

Many git commands (e.g. git-merge, git-checkout) will automatically use the
information in $GIT_DIR/info/sparse-checkout when dealing with files in the
git working tree, so generally a calling git-read-tree explicitly is not
needed.

However when the content of $GIT_DIR/info/sparse-checkout changes it is
necessary to call "git read-tree -mu HEAD" to update the content of the
working tree.