Laying the groundwork for git push over XMPP. BTW, the motivation for doing
this now is that if the assistant can push git data peer-to-peer, users
who are entirely using the cloud don't need to set up a git repo in the
cloud somewhere. Instead, a single special remote in the cloud will be all
they need. So this is a keystone in the assistant's cloud support.

I'm building the following pipeline:

	git push <--> git-annex xmppgit <--> xmppPush <-------> xmpp
	                                                         |
	git receive-pack <--> xmppReceivePack <---------------> xmpp

A tricky part of this is `git-annex xmppgit`, which is run by `git push`
rather than the usual `ssh`. Rather than speak XMPP itself, that feeds the
data through the assistant daemon, using some special FDs that are set
up by the assistant when it runs `git push`, and communicated via
environment variables. I hoped to set up a pipe and not need it to do any
work on its own, but short of using the linux-specific `splice(2)`, that
doesn't seem possible. It also will receive the exit status of
`git receive-pack` and propigate it to `git push`.

Also built the IO sides of `xmppPush` and `xmppReceivePack` although these
are not tested. The XMPP sides of them come next.

----

Stuffing lots of git-annex branded USB keys into envelopes tonight, while
watching the election coverage.
