Fognini battles back to beat Coric and reach the Monte Carlo Masters semi-finals