Anderson stuns Federer in quarter-final cliffhanger