Centrica launches £250mn buyback as energy prices drive up profit