A Distributed System-level Diagnosis Model for the Implementation of Unreliable Failure Detectors