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 
Probably not the easiest test to write, but I think we should have a test on the hash code to check for even-ish distributrion. Because of what it is used for, it maters quite a lot (as in could create bad skew problems in some jobs).