Don't treat null-safe or spread property expressions as part of the path for a `$.path` input reference. For example, treat `$.things*.name` as `($.things)*.name`. Similarly, treat `$.thing?.name` as `($.thing)?.name`.
Changed the descriptor for DSL rules so that it more closely matches the expression used in the code to reference the subject. This change also detangles the subject path from the DSL rule descriptor, so that they can be different.