Vintage Federer holds off Nadal to reach Wimbledon final