Add TIFF tags for specifying min/max sample values.

This will write the minimum and maximum cell values into the TIFF
file itself. It's worth noting that GDAL ignores this information
and calculates the min/max itself (when -stats is provided).

The hope is that ArcMap can use this information.
port datamap benchmark to new-style caliper benchmark
update all benchmarks to MyBenchmark trait
Merge pull request #108 from non/topic/geotiff-value-range

Add TIFF tags for specifying min/max sample values.
Merge pull request #109 from non/topic/benchmark-refactor

Topic/benchmark refactor
Add alternate MultiplyConstant operations to DataMap benchmark.

The indirection of the current UnaryLocal/WithInt operations may be causing
performance problems relative to our old performance. These alternate
operations help highlight exactly which indirections seem to be adding time.
Overhaul data map benchmarks and optimize map() and mapIfSet().

This commit adds a ton of new data map benchmarks, which help root out the
slowness we've been seeing with many of our unary local operations. It also
adds map/mapIfSet/foreach to RasterData which provides significant performance
improvements.

This commit should precede a general refactor of the unary local operations.
Merge pull request #110 from non/topic/more-datamap-benchmarks

Add alternate MultiplyConstant operations to DataMap benchmark.
Optimize unary local raster operations.

This checkin removes the old UnaryLocal machinery that was causing significant
slowdown through the introduction of int boxing.  Instead, the unary local operations
(which are quite simple) simply extend OpN.

The Identity operation has been removed, as it is redundant given CopyRaster.

A compiler bug forced the geotrellis map algebra style implicits to be moved to
geotrellis.Implicits.
Create Bit-, Byte-, and Short-backed RasterData implementations.
Refactor IntRaster, RasterData and friends.

This is a pretty major refactor that renames IntRaster to Raster. It also has
some changes to the various RasterData classes to help with performance and
compatibility.
Add LazyRasterData classes.

This commit adds a lazy/strict raster data distinction. It also implements a
number of (currently unused) lazy raster data classes.
Refactor readers to use StrictRasterData objects.

This replaces the use of Array[Int] in most cases, and paves the way to readers
which can initialize other types of RasterData, e.g. Byte-, Short-, or...
(gasp) even Double-based RasterData instances!
Update arg8 and arg16 readers to use newer RasterData.

This change moves us closer to (transparently) using Byte- and Short-backed
rasters for arg8 and arg16 rasters. It also fixes the NODATA translation
support (e.g. converting -128 <-> NODATA for Byte).

Future work: we should move away from a global NODATA constant and toward a
raster-based value, so that we can stop doing NODATA translation (and also so
that Double-based rasters won't have a weird hole at -2147483648.0).
Add arg16 case to raster loader.
Add support for Float- and Double-backed rasters.

This commit adds (untested) support for the float32 and float64 datatypes.
These rasters should be compatible with existing (Int-based) operations, but
will lose precision in those cases. Operations wanted to operate on floating-
point data will need to use applyDouble() and updateDouble(); currently apply()
and update() are used instead.
Test basic DoubleArrayRasterData capabilities.
Fix some bugs in RasterData and add documentation.

This stuff still needs more testing and tests.
wip
wip