Did we agree that Foreign.Marshal.Alloc whould provide finalizerFree :: FunPtr (Ptr a -> IO ()) (or some other name) corresponding to free, for use as an argument to newForeignPtr?