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.