Built out the XMPP push notifier; around 200 lines of code. Haven't tested it yet, but it just might work. It's in the xmpp branch for now.

I decided to send the UUID of the repo that was pushed to, otherwise peers would have to speculatively pull from every repo. A wrinkle in this is that not all git repos have a git-annex UUID. So it might notify that a push was sent to an unidentified repo, and then peers need to pull from every such repo. In the common case, there will only be one or a few such repos, at someplace like at github that doesn't support git-annex. I could send the URL, but there's no guarantee different clients have the same URLs for a git remote, and also sending the URL leaks rather more data than does a random UUID.

Had a bit of a scare where it looked like I couldn't use the haskell network-protocol-xmpp package together with the mtl package that git-annex already depends on. With help from #haskell I found the way to get them co-existing, by using the PackageImports extension. Whew!

Need to add configuration of the XMPP server to use in the webapp, and perhaps also a way to create .git/annex/creds/notify-xmpp from the command line.