Sen. John McCain reveals he has brain cancer