San Miguel de Allende named world’s best small city