Create an alert dispatcher with cancellation

I assume that this means that the Monitor object will keep track of the "last known state" of each path locally. If the 'last_state -> new_state' transition matches a particular pattern, this will return false... otherwise it returns true, right?

This method should not take in 'data' -- but rather it should take in some arbitrary state value (maybe a series of constants. monitor.states.NON_COMPLIANT, monitor.states.COMPLIANT, monitor.states.UNKNOWN). When the initial Path watch is created, the state is set to monitor.states.UNKNOWN. The verifyCompliance() method could return back a tuple (state, message). From there, the state could be passed into should_dispatch_alert(state) and it could do a check against the old state vs the new state.