gh-1566

**note ready for merge**

This fixes #1566. The `addMapping()` method is sometimes called with `undefined` as the second argument - by itself that's fine (if you have `<foo bar='{{baz}}'/>` you want to create a `bar` mapping on `<foo>` even if you don't yet know what `baz` resolves to), but it causes problems when you try to create mappings that 'leapfrog' through multiple levels. One solution is to only map one level at a time. (Dependants are still registered with the viewmodel at the top of the chain.)

However it breaks a load of other tests related to reverse mappings - I'm going to raise a separate PR about that.