fix(filterFilter): make `$` match properties on deeper levels as well

Closes #10401
It makes sure that a string property only matches its level (as long as the key isn't `$`).
I.e. it tests that `{name: 'Jo'}` won't match against `{name: {first: 'John'...}}`.

See https://github.com/angular/angular.js/pull/10401#issuecomment-66553047; the previous test-suite was passing even with an incorrect implementation.