Add SetPath to API

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
```

I was tempted to do the API as `SetBranch(val interface{}, branch ...string)` but the pay back of getting the `...` seems outweighed by the confusion of swapping `key` and `value` (relative to the `Set` method).