Using whisperer

Basically all events from the whisperer client are syndicated down to socket.io's socket, and all whisperer functions are exposed as socket bindings.

Here's an example session below. For reference, the command I issued were:

``` javascript
['online', 'error', 'message', 'presence'].forEach(function(name) { socket.on(name, console.log.bind(console, name)) })
socket.emit('login', {jid: 'paul.sweeney@jabber.org', password: 'your password here'})
socket.once('online', function() {
  socket.emit('join', {jid: 'tainthorse@conference.jabber.org', nick: 'nick' })
})
```

![Example session](https://f.cloud.github.com/assets/139790/422040/1dc8aae2-ad19-11e2-90c6-50c21f5929ac.png)