José de San Martín, Generalísimo de las armas del Perú