RDD abstractions for reading and writing tiles from/to HDFS 

The three main RDD abstractions are:
LoadImageRDD - wrapper over Spark's HadoopRDD, this is the mechanism for reading map files containing tiles
SaveImageFunctions - wrapper over Spark's saveAsHadoopFile, this handles saving tiles as map files 
TileIdPartitioner - a Spark partitioner customized to our RDD storage strategy (partitioned map files)

In addition, this PR enables Kryo serialization for intermediate shuffle of the TileIdWritable and ArgWritable objects. 

Also, this PR introduces a new environment variable GEOTRELLIS_HOME, which needs to point to the top-level directory of the geotrellis installation. This variable is used to infer the geotrellis-spark's fat jar for use by Spark.