3.0 shell cleanup

Extract a trait from the shell class. I've always found having the conventions/inflection methods included in `Shell` as a bit silly. Having a separate trait opens up the possibility of re-using these methods in other parts of the framework.