refactor of action descriptor pipeline

Adding extensibility for how `ReflectedActionDescriptor` is created.

This replaces the various `*DescriptorFactory` interfaces.
Same thing here - it's tiring putting the same boilerplate mocks in. This is more reusable