Make VersionsRepository cope with Google Code

When "muddle init" sets up the VersionsRepository, it now runs the
URL through a Repository instance, so that the Google Code handler
has a chance to amend it. This allows "muddle stamp push" to work.
Derive the $MUDDLE binary path in a more robust way
Directory raises GiveUp, not MuddleBug

I think that it is generally more sensible for the withdir
Directory classes to raise GiveUp rather than MuddleBug.

Certainly in the case of, for instance, "muddle status" when
a checkout has not been checked out it gives a grumble rather
than crashing out of "muddle status".
collect.copy_from_role_install() can now cope with copying files.
Fix issue 222 How to pull shallow checkouts
Make it possible to run muddle via a soft link

For some reason this wasn't catered for. Elliott needed it.
Make "muddle distribute _binary_release" happier

Previously, a build description with aptget.medium() in it would
fail - partly because that is not a MakeBuild action, and partly
because it doesn't produce an install/<role> directory.
Fix issue 255: provide deployment distribution
"muddle distribute _deployment" should preserve modes
A script which can determine what has changed between two stamp files.
Initial commit of git pre-commit hook
Avoid use of xargs in pre-commit script

(due to bugs in the implementation making it nasty to use)
Add an installation script
Make the install script understand muddle build trees
Update the README for the new install functionality
Merge branch 'master' into issue247-improved-cmd-running