Race condition when switching masters in JedisSentinelPool

Instead of recreating GenericObjectPool, we change the
underlying factory destination host. When returning
objects to the pool we make sure they are pointing at
the correct master.
Add an extra sentinel server to tests

Adds an extra sentinel server monitoring the mymaster failover cluster,
makes the tests more interesting.
Fix race condition in JedisSentinelPoolTest

The test was issuing the failover command and only afterwards
connecting to the pub-sub channel to receive failover notifications.
If the failover occurred fast enought the pub-sub listener would never
get the notification.

Run the failover command on a separate Jedis connection after we're
absolutely sure that we're subscribed to the pub-sub channel.
Add check that JedisSentinelPool accepts closing connections before and after failover
Proper master failover detection depends on testOnBorrow
Let the user choose whether to testOnBorrow or testOnReturn

Force testOnBorrow if neither is specified.
Properly close jedis connection in case of exceptions
Add second jedis connection to waitForNewPromotedMaster call
Do master failover detection in JedisSentielPool.getResource