Fix embedded data structure matches

This fixes 2 issues introduced in 428bd43:

1. When traversing too far into a multi-level dict and a bare string is
   reached, trying to index it with the next dict level in the path
   expression results in an uncaught TypeError (caught by unit tests).

2. Continuing the match once a match is found in a dict embedded in a
   list fails (not caught by unit tests, new test(s) forthcoming).
Add additonal unit tests for pull request #13713