Feature/issue 358 idle state

Fix for #358  - Invalid state of Push replicator between IDLE and RUNNING under continuous mode


Solutions
1. Add state-machine trigger from IDLE to RUNNING
2. Extends LinkedBlockingQueue to support queue event listener
3. Call waitForPendingFuture() method and switch state from IDLE to RUNNING if necessary whenever Future task is added into pending queue.
4.  Switch state from RUNNING to IDLE if necessary at end of waitForPendingFuture() method
I think it's ok to leave these log statements in.  Set them to Log.v (for verbose) and people can filter them if they don't want to see them.

(it's cleaner looking than having them checked in as commented)