Changed the exposure for SCMStep so I can extend it in another plugin

We have several different SCM front ends that use the same back end. And to make it easier to configure I would like to be able to extend the SCMStep in our plugin. But if the class SCMStep and SCMStepDescriptor did not have the public state I could not access them in my plugin. 
Could also that I'm missing some thing simple.
I can send the class name as described in the example but it would be easier if I could create my own wrappers.
This could remain `protected` so long as `SCMStep` itself is `public`, since typically `DescriptorImpl` is a nested class of the step. But making this `public` too allows you to keep the descriptor separate if you really want (then you need to explicitly specify the `Descriptor.clazz` in the `super` constructor).