Refactor

Hi,

I'm not sure if metroplex was previously working as intended or not.  When I tried it, all of the keys in Redis were deleted after the interval had expired except for the server:alive keys.

I started trying to fix it and ended up writing a large-ish refactor of how it uses Redis.  I've also setup a spark TTL heartbeat using the client ping transmissions and expanded the tests a bit.

Feedback, questions, and suggestions are definitely welcome.