Improved factoring:

1. AbstractBinaryLogClient now no longer depends on EventListener or LifecycleListener.
2. LifecycleListener goes back to accepting BinaryLogClient arguments.

Still haven't run tests.