refactor of action descriptor pipeline

Adding extensibility for how `ReflectedActionDescriptor` is created.

This replaces the various `*DescriptorFactory` interfaces.
I got tired of creating the same mocks all over. We should do this in a few other places to simplify things