Implement avl_union

This PR adds the `avl_union` function and it's implementation.
I think it's fine as it is (`it's items` ~ `the source's`)