Create DistributedCacheFile, a pleasant API for managing files to be distributed via hadoop's DistributedCache

Dealing with hadoop's filecache.DistributedCache is kind of awkward.
This gives users an easy way of setting up paths to be added to the
distributed cache, and hides the details of consistent-symlink-naming
and such. This is a prerequisite for loading our indexes in hadoop.
implement URI hashing using algebird's existing MurmurHash128 implementation

Removes derpendency on guava.
Pull configuration from implicit mode when adding

Also provide an addOpt method that returns an Option[CachedFile]. When
Hdfs is available, we return Some[CachedFile] otherwise None.
Handle all of scalding's Mode subclasses sensibly

* Local modes will just use the local file path as given, so the
  DistributedCacheFile acts as a passthrough
* Hdfs and HadoopTest both register with the hadoop cache
Remove the need to call add() on the UncachedFile. Add docs. General cleanup.
result of work with @posco: #simplify

* Greatly simplify the API, now one method call, much simpler
  implementation

* change around the documentation, add an example usage of
  DisributedCacheFile
Merge branch 'develop' into filecache
fix test compilation
go go gadget travis!
Merge pull request #450 from slyphon/filecache

Create DistributedCacheFile, a pleasant API for managing files to be distributed via hadoop's DistributedCache