Adds simple local operations to RasterRDD (+, -, *, /) 

The major enhancements in this pull request are:
1. Simple local operations  (-, *, /) to RasterRDD. Each operation has many flavors such as adding raster to raster, constant to raster, etc.  
2. A more functional RasterReader. This one has the ability to perform range lookups. 
3. A Context object that contains all information necessary to pass from one operation to another. This includes a RasterDefinition and other fields needed to reconstruct the final PyramidMetadata before saving the raster. A RasterRDD now contains a Context and is passed from one operation to another using an implicit withContext. There are conversion methods to go from a PyramidMetadata to Context (and hence, RasterDefinition) and back. This is going to be very useful functionality to let geotrellis-spark methods call into geotrellis-core methods that take RasterDefinition or its components TileLayout and RasterExtent. 
4. Test infrastructure to create / destroy spark contexts. Tests can now choose to mixin either a trait that handles spark contexts or one that doesn't. Of course the latter being much faster. 
5. More tests