Support for git-archive and git-show

Supporting getting file content in any ref as well as archiving any ref.
you can simplify this switch:

    switch format  {
    case Tar:
        archiveFormat = "--format=tar.gz"
    case TarGz:
        archiveFormat = "--format=tar"
    default:
        archiveFormat = "--format=zip"
    }