Add an option to cache client details in store

This causes no emits of any kind.
The cache is removed when the data is actually saved/removed
Cache the client details before writing to redis

Also if a client disconnects before we can add to store,
simply check the cache and publish removal to redis.
Since redis operations are ordered, the client will be sent an
client_online and then a client_offline correctly.
AssertHelper which validates messages/responses/acks

Currently only supports a PresenceHelper for presence messages
Rewrite presence test (single server) with helper

Adds more tests:
1. Corner case where presence client right after setting online
2. Various message formats checked (acks, responses and notifications)
Use assert_helper for presence sentry tests
Rewrite presence remote tests using assert helper

Add ways to detect correct online notifications from multiple clients
Provide alternate ways to specify clients to assert_helper
reduce verification timeout for chat reconnection test
unit test for immediate disconnect after set(online)

Make sure we get both a client_online and a client_offline
Merge pull request #96 from zendesk/vanchi/fix_disconnects_after_online

Vanchi/fix disconnects after online