Added a UserData void *pointer so that the callback functions can access user state

"Just in case a project has adverse reactions to adding globals or
statics in their own code."