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 
This is unrelated and should be another PR.

While we're talking about `Dictionary` we should create a `Feature` case class 
`case class Feature(id: FeatureId, meta: FeatureMeta)` and simply have the `Dictionary` being a set of those (possibly keeping an internal map for fast access). There are around 20 places where we pass `(FeatureId, FeatureMeta)` in the code.