Former Masters champion Danny Willett made huge strides up the US Open leaderboard after a third-round 67 - his best score in the tournament.