Fix OPENDJ-660: HeartbeatConnectionFactory should avoid doing heart-beats and Bind/StartTLS operations concurrently
* only send heart beats when connection is idle for longer than half the heart beat interval
* use shared/exclusive semaphore to coordinate Bind/StartTLS (shared) and heart-beats (exclusive)
* support concurrent Bind/StartTLS operations if the underlying connection does. This is not the case for the LDAPConnectionFactory but may be possible against internal stateless connections
* update Proxy example to use heart beats.
TODO: unit tests will be committed in a separate change.