Flexible Fault Tolerance for the Robot Operating System