This builds on the concurrent queue to create a generic way to allow goroutines to pub/sub information. An example includes being notified each time a state machine is able to carry out a new state transition.