Enhance the annotation event dispatcher

These changes provide a mechanism for the annotation event dispatcher to work with events that have generic payloads.  It also provides a few interfaces and abstract implements for getting started with events.  Finally, it flushes out the README to give a better description of the problem the library is trying to solve and how to to use the library.