Auto-tracking of version/commit info

Submitting this for discussion, not necessarily merging. I'm not sure I like this approach myself.

* This adds a pre-commit hook that updates the version number and commit hash automatically and runs version.py on every commit to make sure version hashes don't get out of sync. Version number is tracked automatically from tags. This basically eliminates the chance of forgetting to run one of these scripts on commit/release, mismatching the release number, etc. The one annoying part: this has to be manually installed by developers by symlinking .git/hooks/pre-commit to this script.

* Adds a no-md5-check option to 'retriever update'.

One complication I just thought of: how do we handle releases? When we create a new release tag, the tagged commit will have an incorrect version number; only the next commit will have the correct version. This could be solved by rebasing, but is still a bit messy.