Optimize javaName in the backend

Avoid the reportedly expensive call to `exists` if the
old and new symbols are the same, which used to be
called as part of the assertion.

The profiler reported 1% in exists(), of which 63% comes
from javaName.

The next most frequent caller is `Context#isInPackageObject`.
I must confess, I still have trouble understanding what `exists` and
`reallyExists` actually mean.