[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.
I added a classpathUrls param so that when we're compiling the child-first classes, they can have the parent classes on the classpath (to model the child-class extends a class available in the parent loader).