Support arbitrary selectors for targets

Cause why not? For my team, this was the expected behavior and hopscotch does not currently throw a useful error message when it does not get what it expects. We were confused when encountering exceptions when given a perfectly valid selector, especially since the code that calls this handles multiple matches gracefully.

This implementation passes all tests that are currently passing in master, and preserves backwards compatibility for existing calls to `getStepTargetHelper`.