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 val owners that
    aren't synthetic.

    This scheme wouldn't be enough if the base class were local as well,
    and the derived class saw it with a non-trivial prefix type; however
    scala doesn't allow it.