[SPARK-4079] Default to LZF if Snappy not available

By default, snappy is the compression codec used.
If Snappy is not available, Spark currently throws
a stack trace. Now Spark falls back to LZF
if Snappy is not available on the cluster and logs
a warning message.

The only exception is if the user has explicitly
set spark.io.compression.codec=snappy. In this
case, if snappy is not available, an
IllegalArgumentException is thrown.
Hmmm. I don't think this method should fall back to lzf; here the user is explicitly requesting for a codec with the given name. `createCodec(conf)` is the only place where the defaults apply.