[project @ 2005-06-27 22:31:41 by simonmar]
As discussed on ghc-users some time ago, optimise the representation
of ForeignPtr to make withForeignPtr more efficient. ForeignPtr is
now represented by a pair of an Addr# and a ForeignPtrContents object.
withForeignPtr just extracts the Addr# and touches the
ForeignPtrContents.
ForeignPtr no longer uses the primitive ForeignObj# type: it isn't
required, since we attach the finalizer to the IORef inside
ForeignPtrContents now. In fact, the ForeignObj# type is now
obsolete, and can be removed.