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.

This is a different approach to solving the same problem as in #517.
Major improvement is no exceptions thrown when fetching and returning
objects even during failover.