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.
Refactor catalog.scala and json parsing.
Add into() method to Operation.

The into() method is a method that allows operations to be composed
in a clean pipeline expression instead of inverting the order between
method invocations and class construction.

For example,

io.LoadRaster("foo")
  .into(Multiply(_, 3))
  .into(...)

instead of Multiply(io.LoadRaster("foo"))
Merge pull request #462 from joshmarcus/topic/tiled_local

Local operations act transparently on tiled rasters.
Merge pull request #468 from joshmarcus/topic/into

Add into() method to Operation.
Unify focal operations on tiled and untiled rasters.

This commit removes the need to use TileFocalOp when applying focal operations
to tiled rasters.  Focal operations now extend FocalOperation[Raster] with CanTile.
The public analysis area interface has been removed from the base classes.

The current mechanism uses reflection.  I have an initial implementation of an alternate
strategy, but this checkin extends the current strategy to simplify the API for the user.
Refactor of catalog code, should now read geotiffs and ascii in catalog
Tiles, ascii and geotiffs now in catalog
Merge remote-tracking branch 'upstream/master' into catalog/tiles
Setting other projects to use new TileSetRasterLayer
Remove focal.TileFocalOp from benchmarks.
Merge pull request #469 from joshmarcus/topic/unify_focal

Unify focal operations on tiled and untiled rasters.
Merge remote-tracking branch 'upstream/master' into catalog/tiles