Ineos Grenadiers' Adam Yates had a day to remember as he attacked on the final climb to win Stage 3 of the Volta a Catalunya.