Sloane Stephens is through to her maiden grand slam semi-final after a stunning win over Serena Williams at the Australian Open.