This commit allows for updating values for more "complex" paths like:
friends.#(last="Murphy")#.last
This is allowed because GJSON now tracks the origin positions of all
results (https://github.com/tidwall/gjson/pull/222).
This new ability is limited to updating values only. Setting new
values that previously did not exist, or deleting values will
return an error.
Added the Option type with the Optimistic field. This field can be
used when the caller expects that a value at the specified path
already exists. The Set operation will used `gjson.Get` on the
full path to the value and replace it with the new value.
If Optimistic is specified but the value is not found, then the
normal Set operation is used.
Using Optimistic can speed up a Set operation by as much as 4x.