Minimizing Data Loss

Someone emailed me recently about removing the "Goal" for "No Data loss" for this client. I originally thought that data loss was inevitable (and it is in [some cases](http://aphyr.com/posts/283-call-me-maybe-redis)). However, I started thinking about minimizing data loss, and how DocuSign did it in v0.1 of this client. I believe I inadvertently removed a feature that minimized data loss originally. This PR aims to put that back in, with the "Goal" and tests and everything.

Essentially there are two code changes:
- on `failover start` event (coming from a `+try-failover mymaster` sentinel event), we disconnect the active client. We do this because we don't want to be sending commands to a soon-to-be slave. We'd rather either A) queue in `offline_queue` or B) bubble up errors if `enable_offline_queue` is `false`.
- on reconnecting our redis client, we transfer the offline queue of the old active master client to the new one the same way we transfer `old_state`. This ensures we are able to resend the offline queue when connection occurs.

I also added a test for it in, instead of using a pub/sub method, i used an `RPUSH` /  `LRANGE`. It should be equivalent.

Recap:
Added back in data loss minimizing techniques so on manual failovers and master shutdowns, losses are minimized (eliminated in most cases)