Having an ```Option[SparkContext]``` argument means we have to do ```new SparkUI(Some(this)) ``` from SparkContext, which seems strange to me.

To hide the ugliness of null SparkContexts, I think a better way is to make a new constructor that looks something like ```def this() = this(null)```