Add "Logger" utility, which maintains vector clocks for each actor.

Yes. pendingEvents.remove just removes a key from the dictionary and either returns Some(key) or None. If it returns Some(key) then we just call schedule_new_message. This is just an artifact of how Scala works.