Vanchi/fix disconnects after online

This fixes immediately disconnecting after set('online') sometimes failing to give out any updates, or even worse, just sending out the online and not removing the client.

This happens because everything is done by first publishing to redis and then processing the callback. In the case of a disconnect, unfortunately, we may only have the client-id and not the userId and userType. The fix is to cache the details until we can actually add them to the store.

Additionally: 
1. Moves all complex assertion code to one place where the notifications/responses are well defined.
2. Make the tests more readable and shorter/easier to write.

/cc @zendesk/zendesk-radar 

### Steps to merge
 - [ ] :+1: of the team

### References
 - Jira link: 

### Risks
 - Low: Presence maybe broken.
 - Low: tests may not be valid.