WIP: implement a refcounted atomic pointer.

Implementation uses hazard algorithm to maintain reference counter
invariant without waiting.  The pointer interface is like std::atomic<T*>.
In addition to refcount pointer semantics, the pointers also support
tagging via flag bits.