Set GIT_NAMESPACE if has remote.<name>.namespace

GIT_NAMESPACE is designed to be used mainly on the server side, that
the server can serve multiple git repositories while share one single
repository with different GIT_NAMESPACE settings.

Since we know that the remote repository hosts multiple namespaces,
can we handle different namespaces in one local repository? Or can
we access the proper namespace of the remote repository without
complicated server settings?

According to the manpage of gitnamespaces, it is simple if remote is
a local bare repo.

    $ git remote add foo 'ext::git --namespace=foo %s /tmp/prefixed.git'
    $ git remote add bar 'ext::git --namespace=bar %s /tmp/prefixed.git'

But it is not that easy to pass the namespace to the remote server
when use ssh or other protocols. It may not work if write the URL
like this:

     'ext::ssh git@server git --namespace foo %s path/to/repo.git'

This is because the ssh server may not like the "--namespace foo"
option, especially when ssh to a limit account using git-shell or
gitolite as a shell. But passing the GIT_NAMESPACE environment
may work.

 1. Set '/etc/sshd_config' in the server side as the following,
    so that the ssh server can accept GIT_NAMESPACE environment.

        AcceptEnv LANG LC_* GIT_NAMESPACE

 2. In the client side, When connect to ssh server, must send the
    GIT_NAMESPACE environment. This can be done with a remote-ext
    url:

        $ git remote add foo \
          'ext::ssh -o SendEnv=GIT_NAMESPACE git@server %S 'path/to/repo.git'

Then the remote "foo" is GIT_NAMESPACE aware, but when pull/push,
we must provide the proper namespace option, like follows:

    $ git --namespace=foo push foo master
    $ git --namespace=foo fetch foo
    $ git --namespace=foo ls-remote foo
    $ git --namespace=foo remote prune foo
    $ git --namespace=foo archive --remote foo HEAD

But provide a "--namespace" option is error-prone. How about add a
"remote.<name>.namespace", and set the GIT_NAMESPACE when necessary?

With this patch, if the remotes are set like follows:

    [remote "foo"]
            url = /local/repo.git
            namespace = foo
            fetch = +refs/heads/*:refs/remotes/foo/*

    [remote "bar"]
            url = ext::ssh -o SendEnv=GIT_NAMESPACE git@server %S 'path/to/repo.git'
            namespace = bar
            fetch = +refs/heads/*:refs/remotes/bar/*

No "--namespace" option is needed when operate on these remotes:

    $ git fetch foo
    $ git fetch bar

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>