Update SparkContextFunctions.scala

To make it Serializable
take a look at this http://stackoverflow.com/questions/23737804/enriching-sparkcontext-without-incurring-in-serialization-issues
Made SparkContext variable transient in SparkContextFunctions (PR #373 by @critikaled)
Calculate implicit TypeTags for leaf types in TypeConverter companion object constructor, rather than in targetTypeTag method. Therefore they are initialized all exactly once and there is no risk of race conditions, and no need to acquire a lock whenever they are referenced. Synchronize many methods which construct type tags on demand. Fixes #364.