Changes to make it easier to extend the ListenerHelper
This also includes the first extention of it (AsyncCallListenerHelper).  This implementation makes it so that the .call() functions will never block (by just running within the executor provided at construction time).
This also has javadoc improvements for existing functions, making it clear what is necessary when providing an executor to prevent concurrent execution of listeners.  I got a bit worried people might accidently shoot themselves in the foot the more I considered it.