[SPARK-4877] Allow user first classes to extend classes in the parent.

Previously, the classloader isolation was almost too good, such
that if a child class needed to load/reference a class that was
only available in the parent, it could not do so.

This adds tests for that case, the user-first Fake2 class extends
the only-in-parent Fake3 class.

It also sneaks in a fix where only the first stage seemed to work,
and on subsequent stages, a LinkageError happened because classes
from the user-first classpath were getting defined twice.
This CNFE/call parent is based on the same SO post, which AFAICT might have even been the inspiration for the original implementation here (the SO post was linked in one of the original user-first tickets), but this detail got dropped, I assume accidentally.