[FLINK-14465] Let StandaloneJobClusterEntryPoint use the user code class loader
[FLINK-14465] The PackageProgram's constructor does not throw excpetion any more when jarFile is null. Introducing this change is because there may be no jarFile in perjob mode. All jars the user code depends on are in the classpaths.
[FLINK-14465] ClassPathJobGraphRetriever creates PackagesProgram with user class paths.
[FLINK-14465] StandaloneJobClusterEntryPoint uses "FLINK_HOME/usrlib" as the job's class path. The environment variable FLINK_HOME is set at Dockerfile. Link the FLINK_JOB_ARTIFACTS_DIR to the FLINK_HOME/job, which makes the FlinkUserClassloader load the user class in the standalone perjob mode.