SI-7096 SubstSymMap copies trees before modifying their symbols

I removed some strange code in a06d31f6a2 and replaced it by something
incorrect: SubstSymMap should never have side-effects: otherwise,
calling 'tpe1 <: tpe2' for instance would modify the symbols in
annotations of tpe2.

SubstSymMap now always creates new trees before changing them.
Merge pull request #2092 from lrytz/t7096

SI-7096 SubstSymMap copies trees before modifying their symbols