Michael Phelps says he will retire after London Olympics