José de San Martín, Generalísimo de las armas peruanas.