Add 'pointer' reference and proper weak semantics

Weak references did not have the right semantics. They have been
upgraded, and their purpose given to pointer references.