[SPARK-1946] Submit stage after (configured number) 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 number, default value 0
spark.executor.minRegisteredNum = 20

\# whatever registered number is arrived, submit stage after the maxRegisteredWaitingTime(millisecond), default value 10000
spark.executor.maxRegisteredWaitingTime = 5000
I agree that the default should be zero to keep same behavior, but it should also be able to be changed to a reasonable default for all people using a cluster.  For instance, I want all spark on yarn customers using grid x to have this default to 90% of their executors available before starting because that is what gives them a good experience.  Like I said if that doesn't make sense for other deployment modes or its very hard to implement then we can work around for yarn, but its adding yet another config which I would prefer not to do