New feature: Support arena and custom allocator
To support Go1.20 arena and other memory management APIs, there is a new type Allocator to enable us to take full control over memory allocation when cloning.
There is a breaking change in type Func which is used by SetCustomFunc. Hopefully, this would not break many users.
Full Changelog: v1.4.1...v1.5.0