3.0 Pass positional shell arguments to Shell class

Part of #3325. This makes shells get all positional arguments as method arguments just like controllers. I've updated the existing core shells to use this pattern as it saves more than a few lines of code.