SI-8047 change fresh name encoding in quasiquotes to avoid symbol owner corruption

Previously a following encoding was used to represent fresh names that should be created at runtime of the quasiquote:

```
build.withFreshTermName(prefix1) { name$1 =>
  ...
    build.withFreshTermName(prefixN) { name$N =>
      tree
    }
  ...
}
```

It turned out that this encoding causes symbol corruption when tree defines symbols of its own. After being spliced into anonymous functions, the owner chain of those symbols will become corrupted.

Now a simpler and probably better performing alternative is used instead:

```
{
  val name$1 = build.freshTermName(prefix1)
  ...
  val name$N = build.freshTermName(prefixN)
  tree
}
```

Here owner stays the same and doesn’t need any adjustment.