record c v links the lifetimes of c and v, ensuring that v is not
collected while c is still live. The return value is a key
that can be used to retrieve v while v is still live.
record c v
retrieve v retrieves a value using a key returned by record, or raises
Not_found if v is no longer live.