Require File::pushd to run tests
Change temporary file naming

Some file checkers, e.g. PerlCritic and Python Lint complain of
invalid filenames. We should preserve the file name and path when
initiating the Git::Hooks::CheckFile arguments as well as possible.

Now the temporary file created to dump the contents of <path>
at <commit> is constructed as:

  <File::Temp->newdir>/<commit>/<path>

The contents of all temporary files are cached by commit:path so that
they can be reused, possibly by different Git::Hooks plugins. The
temporary directory is removed with all of its contents when the hook
exits.
Drop dependency on File::Basename
Fix CheckFile example