Add ability to build pyramid levels to geotrellis-spark

1. Added TileIdPartitioner to Context - We need it to save it to disk when calling RasterRDD.save
Also, downstream operations from RasterRDD need it to reason about how the RDD is partitioned
2. Added a helper utility RasterStorageStats to various block/tile/partition-level stats from an on-disk raster
3. Removed unused code from SaveRasterFunctions
4. Added PayloadArgWritable to handle a new use-case of passing in some user-defined payload object (Hadoop Writable) to be serialized alongwith the RasterData
5. Add TileIdZoomWritable and MultiLevelTileIdPartitioner to handle partitioning in BuildPyramid