Fix generated code when wrapping a class with a private destructor.
If a class has a private destructor, it cannot be subclassed. The normal
smoke approach when wrapping a class is to subclass it, which doesn't work
when a private destructor is involved. The solution is to make a class
that is just a collection of static methods, that dispatches the function
calls appropriately.