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

I guess I'm mostly confused about the control flow. e.g., `caseSome(key) => schedule_new_message()`... why throw out key there? Is that an implicit `return`?