Change SparkContext constructor to take only a Config object

Ok, the main constructor takes a Config as well as optional preferredNodeLocationData,
which cannot easily be extracted from a Config.
A secondary constructor takes the old Spark master and appName for convenience.
Utility functions in ConfigUtils makes it easy to construct and combine Config objects
from the parameters that are gone.
The existing JavaSparkContext and JavaStreamingContext APIs are preserved.
Add two constructors that take Config objects to the Java API