Synthesis of communicating decentralized supervisors for discrete-event systems with application to communication protocol synthesis