Czech 10th seed Karolina Pliskova outplayed Serena Williams to reach the US Open final and end the American's reign as world number one.