[SPARK-1065] [PySpark] improve supporting for large broadcast

Passing large object by py4j is very slow (cost much memory), so pass broadcast objects via files (similar to parallelize()).

Add an option to keep object in driver (it's False by default) to save memory in driver.
Typo: should be spelled "accessible."  Also, maybe the error message could be a little clearer about how broadcast variables are created and why call failed.  I'm thinking of something like "please call sc.broadcast() with keep=True to make values accessible in the driver".