redis: deduplicate reconnect code
redis: deduplicate reconnect code

This cleans up a lot of the methods. But most importantly, the reconnect
logic is now in one place and we can unit test it.

Updates #520.

nebolsin/tyk,mvdan/tyk,lonelycode/tyk,mvdan/tyk,nebolsin/tyk,nebolsin/tyk,mvdan/tyk,lonelycode/tyk,lonelycode/tyk,nebolsin/tyk,mvdan/tyk,mvdan/tyk,nebolsin/tyk,mvdan/tyk,nebolsin/tyk,nebolsin/tyk,mvdan/tyk,mvdan/tyk,nebolsin/tyk