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 don't think this one holds it weight. I know there is a lot of code that does this (RecreateConfig etc...) but I don't think it is better than just passing the argument. My main concern is a proliferation of different readers that are all only use for a handful of functions. And as we add cross-cutting concerns (i.e. profiling) any common combinators will need to be duplicated. I have been trying to nudge people to get rid of the other ones as well. But this probably deserves to be discussed once in terms of strategy (I see some comments on the other IvoryT PR as well - but in that case I disagree strongly - because it clearly holds it weight, we will get compounding benefit as we add cross cutting concerns).