Add data pointer to listener struct.

This allow us to preserve more state about the listener object when we handle an accept.

For example, I have a module that handles http requests a bit like sinatra. I'd like to have multiple instances of this module, so that a request to `/` on two different ports can be handled two different ways. Without being able to store data in the listener object, there's no nice way to figure out how we should handle a given request.