Implement gb_trees:modify/3 function to update the value using fun((Val1) -> Val2)

The new function is a more efficient way to update the value of the given key. It takes updater fun as the second argument that will be called on the current value to return the new one, which is faster than a call to `lookup/2` followed with `update/3`.