Add weak_intrusive_ptr and remove use of shared_ptr altogether.