optimizations
- stop excessive copying of messages (can still improve delayed message
  processing by moving to a linked list)
- no need to run each round, just compute probability for accumulated
  rounds
- use a hash table to specify if a member is online since we are calling
  on_msg so much more than join or quit, it proves to be much faster
removed percent and replaced it with a integer representing the amount
of times offline and no message appears without being intersected out
and added an output for doing analysis later
probability is now offline time / total time (should be pseudonym quiet
time...)