Resolve "Boxed copy constructor should not be called, split Boxed into prototype and instance structs"
This is a large refactor to solve a small problem. We take the ObjectBase/ObjectPrototype/ObjectInstance scheme from object.cpp and refactor it into a general template in wrapperutils.h, which we then use in boxed.cpp, fundamental.cpp, gerror.cpp, interface.cpp, and union.cpp.
This cuts down on a lot of repeated code and small divergences.
Closes #215 (closed)