Set Path

I started exploring interface with some tests to see if we can update part of JSON using `GetPath()` .. `Set()`, which it seems you cannot do. My use case is that I have some path (the word "branch" is used in the code), and I want to update this with some value.

I've added `SetBranch` which you'd use like this:

```
js, err := NewJson([]byte(`{}`))

js.SetBranch([]string{"foo", "bar"}, "baz")

s, _ := js.GetPath("foo", "bar").String()

// s = "baz"! yay
```