FMI: Fault Tolerant Messaging Interface for Fast and Transparent Recovery