Richie Porte recovers from puncture to stay fourth in Tour de France