SI-7202 tighten name mangling.

When the compiler wants to make private symbol visible outside its
declaring class, it also changes the name to make it unique to avoid
accidental overriding.

The current scheme prepends fullName of the owner class, which could
still result in overriding if the derived class is nested in a value
definition.

To avoid such scenario, name mangling prepends not only the names of
the enclosing classes, but also '!' characters for non-class owners.
'!' is chosen as a valid character in binary name, that is escaped
in scala source code.

Adding a single character is enough since any local classes defined
in mangled term owners are not visible outside, so any inadvertent
overriding between two locals is not possible.