refactor of action descriptor pipeline

Adding extensibility for how `ReflectedActionDescriptor` is created.

This replaces the various `*DescriptorFactory` interfaces.
I don't fully understand how these would be used - but why do these come from Options as opposed to DI?