Update description to be more descriptive
Add NEWS file
Refactor callback handling

Do more in the library code and use a dispatcher class to do the dispatching,
simplifying event loop integration.
Update test script to match new callback handling