hRaven Reducer Estimator

Adds new "scalding-hraven" module with an estimator that looks up job history in hRaven to determine the actual amount of bytes reaching reducers. The `HRavenHistory` trait can be added to a `ReducerEstimator` to add functionality for looking up job history, and the `RatioBasedReducerEstimator` does this, scaling the estimate provided by `InputSizeReducerEstimator` based on the past ratio between mapper/reducer input sizes.

This PR also includes a couple other minor changes:
- Using a case class as argument to `estimateReducers` to hold the common reducer estimator info (`flow`,`step`,`predecessorSteps`)
- Add optional `fallbackEstimator` which lets estimators be chained

So far I don't have a story for unit testing hRaven. Any ideas are welcome.
I'd prefer if we could break this in two:

1) An abstract class that has a method like
```scala
case class InputSizes(mappers: Long, reducers: Long)

// implement this
trait HistoryService {
  def getHistory(f: FlowStep[JobConf], max: Int): Seq[InputSizes]
}
```
the above can actually go into the scalding-core. Then you can have a few abstract subclasses of ReducerEstimatar that have a `def history: HistoryService` (also in core): like LeastSquareEstimator (which is what we should do, since it is so easy).

Now, in the Hraven case. We just implement HistoryService and create a new subclass of the model that we want (LeastSquares, median ratio, etc...)