Added ability to rename features

I'm not completely satisfied with this, but wanted to get it open sooner rather than later. I'll leave a few inline comments. The branch obviously won't build until we do something with `IvoryT` (I really wish you could re-target PRs in GH)

/cc @etorreborre @markhibberd @raronson 
I might just be an aesthetic thing but I'm not a big fan of passing the `RenameMapping` as a `Reader` value. To me this is a important parameter that should appear more obviously in the operations signature. 

Also I would put the method which are not used outside the Rename object as `private`. And I suggest an alternative  representation as:
```scala
case class Renamer(mapping: RenameMapping) {
  def rename(reducerSize: BytesQuantity, codec: Option[CompressionCodec]): (FactsetId, FeatureStoreId, RenameStats) = ...
  private def prepareLookups(reducerSize: BytesQuantity): ReducerLookups
  private def prepareGlobsFromLatestStore: List[Prioritized[FactsetGlob]] = ...
  private def renameWithFactsets(inputs: List[Prioritized[FactsetGlob]], reducerLookups: ReducerLookups, codec: Option[CompressionCodec]): (FactsetId, RenameStats) = ...
}
```