Change Client to accept new PlanWithJars instead of PactProgram

PlanWithJars is a simple wrapper around a Plan and a list of jars that
have to be submitted with the plan. This is necessary to enable the
RemoteExecutor that simple accepts a Plan and a list of jars without the
whole PlanAssembler and jar extraction business of PactProgram.

PactProgram now has a getPlanWithJars() method that does the old jar
extraction and simply creates the PlanWithJars wrapper with the plan
that it created from the PlanAssembler in the jar. Client no longer
cares about the jar extraction logic and does also no longer call
deleteExtractedLibraries (since it does not have a reference to the
PactProgram anymore). The code that creates the PactProgram is not
responsible for calling deleteExtractedLibraries after the job is
submitted.