json breadcrumb/path

This creates a json path, as knowing where you are in an object can be very important.

```
let obj = { first: second: third: fourth: true };

whenTraverse(obj, 
  enter: function(node, key, parentNode, path) {
      console.log(path);
  });
```

would output:

```
['first']
['first', 'second']
['first', 'second', 'third']
['first', 'second', 'third', 'fourth']
```

Not tested very thoroughly, just wanted to get it out to see if it would stick and because I need the functionality right now.


On another note, is there any reason you don't just bind a context object to each function?
```
context = { parentNode, key, ... }
promise.bind(context)
```
This way, the function argument could be the node as it currently is, and each chained promise would be returning only what it received. Other properties would be available as this.parentNode, etc.