Add exception-safe make_intrusive helper.

In the same vein of std::make_shared<T>, ze::make_intrusive<T> creates a new
intrusive_ptr and forwards the arguments to the constructor of T.
Implement true value semantics for ze::value.

Pointer-types inside the value union were previously shallow-copied. This
behavior changed now to get side-effect-free value semantics for values.