vcsh: Make status show commits ahead/behind remote

This is work in progress:
* It does not deal with repos without a remote tracking branch
* It does not share any info if run on a single repo
* I should probably factor this out in a new function

github: in response to richih/vcsh#123
Use cowsay from the PATH instead
test commit
test commit
test commit; rewrite to use comm and two temp files to get around argument too long crap
3rd try
vcsh: Make `vcsh which dontexist` exit 1

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760882
vcsh: Add support for overlay functions
Force temporary file/directory removal
Add checks to file operations
Check for existence of 'comm' command
Don't use subshell when creating the temporary repo
Add recursive option (-r)
vcsh: Improve error handling of clone()

May fix https://github.com/RichiH/vcsh/issues/122
vcsh: Initial support for cloning from branches other than master
vcsh: Proper quoting for "$VCSH_BRANCH"
vcsh: Create the local branch during clone

This will create and checkout a local branch named after the upstream
branch. It will also gracefully behave for the default `master' branch
and consistently show the same message:

Switched to a new branch '$VCSH_BRANCH'
vcsh: Only fetch the upstream branch during clone
vcsh: `vcsh clone [-b <branch>] <remote> [<repo>]`

This is the API for an optional branch selection for `vcsh clone`. It is
basically inspired by `git clone [-b|--branch <name>] <remote>`. I could
have used the long option `--branch` too but vcsh only uses short ones.
Replace temporary repository with copy based method