[SPARK-1946] Submit stage after (configured ratio) executors have been registered

Because creating TaskSetManager and registering executors are asynchronous, in most situation, early stages' tasks run without preferred locality.

A simple solution is sleeping few seconds in application, so that executors have enough time to register.

The PR add 2 configuration properties to make DAGScheduler submit stage after a few of executors have been registered. 

\# submit stage only after successfully registered executors arrived the ratio, default value 0 in Standalone mode and 0.9 in Yarn mode
spark.scheduler.minRegisteredRatio = 0.8

\# whatever registered number is arrived, submit stage after the maxRegisteredWaitingTime(millisecond), default value 10000
spark.scheduler.maxRegisteredWaitingTime = 5000
Ah I see -- I was confused by this http://spark.apache.org/docs/latest/spark-standalone.html -- since standalone mode interprets SPARK_WORKER_INSTANCES differently.  Sorry for the confusion!

My other question here was about the ApplicationMaterArguments here -- does that actually get used, or is it just constructed as a way to get numExecutors?