Added BaseAuthLayer.can_update_repository()
added Shell.validate_repo_name() and improved util

- util.straight_path() and util.strip_root() now
  accept an engine parameter.
- added util.make_posixpath()
git update hook.
added executable permissions for bin/git-auth
Added support for reading the user name from environment

By passing env:VARNAME for the user_name parameter,
Shell.main() will read the user name from the environment
variable VARNAME.
Added `repo` command to manage the creation and removal of repos.

closes #7

- added util.confirm()
- added hooks.hook_repo()
- added shell.Shell.DefaultOptions and **options argument
  to constructor to specify options for the naming of
  repositories
- added shell.Shell.run_external() with out=None parameter
  which is passed to the updated constructor of
  StandardCommandRunner
- removed external=False parameter from shell.Shell.run(),
  updated usages
Moved SystemCommandRunner and ShellCommandRunner to git_auth.system module
Fixed NameError when traceback module was used in system.py, replaced out parameter with silent in SystemCommandRunner and Shell.run_external()
Remove util.System class again, added util.make_tar() and util.BinaryFile wrapper class
Added descriptions for repo subcommands and implemented the upload subcommand. closes #7
Renamed `repo create` to `repo init`. closes #7
Extended BinaryFile wrapper class to conform file-object interface
Moved contents of git_auth.system module back to git_auth.shell