WIP: First cut of Config overhaul using Typesafe Config

Core code compiles, tests don't pass
- Add optional config param to SparkContext
- Have SparkEnv be created from config object.
  SparkEnv no longer resets spark.driver.port/host
- SparkEnv contains a new config variable for easy access
- switch spark.driver.host and spark.driver.port over to use config objects
- StandaloneScheduler passes config object over to StandaloneExecutor instead of list of properties
- A new reference.conf stores default values

The net effect is that user passed in configuration takes precedence
over system properties (which are loaded by configFactory.load()) which
take precedence over defaults in reference.conf.