Merge branch 'topic/andthen' into topic/tile_unification
Add new helper Operations for local raster operations.

In place of directly invoking methods on Raster such as map(),
mapIfSet, etc. we will now use the operations in logic which will
include the appropriate logic on how to act on tiled and untiled
rasters.
Update Do operations to reflect operation conventions.

The DoCell family of operations are updated to use the helper raster operations
(for tile unification) as well as to accept their function argument as a second
argument list.  This required eliminating  DoCell apply() method that accepts a
function on double values.

DoDoubleCell was renamed to DoCellDouble, to reflect naming conventions.
Update many local operations to use new helper operations.

As part of the tile unification effort, the local operations will
now use the operations in logic/raster.scala.  This checkin updates
many of the local operations to use them.  The old parent classes
(like BinaryLocal) are removed where appropriate, as they are being
removed.
Convert remaining local operations to use helper operations.
RasterDualReduce op replaces local operation traits.

This commit adds logic.RasterDualReduce which replaces the old
BinaryLocal and MultiLocal traits used to implement local operations.
Local operations should now transparently act on tiled rasters.

This commit updates the local operation helper classes to operate
on tiled rasters, if provided one.  The tiles will be acted on
independently and then reduced to a new tiled raster.  Untiled
rasters should continue to work as before.

This work still requires a bunch of testing and benchmarking.
Fix benchmark project post-local operation changes.
Merge pull request #462 from joshmarcus/topic/tiled_local

Local operations act transparently on tiled rasters.