New libcork allocation API

We're not supposed to use `free` anymore, since libcork now allows the
end application to provide a custom memory allocator.  The new API also
allows libraries that use libcork to accept their own custom allocator,
different than the one that libcork itself uses.  But we're not taking
advantage of that capability at present.