Adding compression to Hadoop save functions

In many HDFS clusters some or all of the data is stored with compression. This patch adds a hook to easily pass a compression codec class when calling saveAsTextFile, saveAsSequencefile, or saveAsHadoopFile, avoiding the need to create a custom JobConf for every save.

There are a few different ways one could factor this, since there is so much overloading and chaining in tall the saveAsXX. I tried to chose a way which didn't  dramatically change what is there now.

Fixes SPARK-763.