[SPARK-4087] use broadcast for task only when task is large enough

Using broadcast for small tasks has no benefits or even some regressions (several RPCs),  also there some stable issues with broadcast, so we should use broadcast for tasks only when the serialized tasks are large enough (larger than 8k, be default, maybe changed in future).

In practice, most of tasks are small, so this should improve the stability for most user cases, especially for tests, which will start and stop context multiple times.
If user change akka frame size to a small one, the jobs also will stop working silently even without this patch.

I think we should have good default values for these, and assume that user know the risk if they want to change some configs, it's not easy to make sure that they are consistant between all possible values for all the configs.