Novak Djokovic sees off a thrilling fightback from Andy Murray to win their French Open semi-final in five sets.