refactor of action descriptor pipeline

Adding extensibility for how `ReflectedActionDescriptor` is created.

This replaces the various `*DescriptorFactory` interfaces.
Why not go the other way and store this as a List<Attribute> instead?