Learning to Cooperate and Communicate Over Imperfect Channels