Problem: implied new/destroy/print are surprising
Problem: implied new/destroy/print are surprising

Solution: remove this logic. Classes that need these methods should
simply define them. The extra cost is close to zero and it gives a
what-you-see-is-what-you-get API definition.

If we absolutely need to hide details that we see often in classes
there are other techniques. The best for classes (as it is well
known and not surprising) is inheritence. It is easy to do with
GSL. We've done this before in class models. The downside is you
start to get too many layers. The upside is you can ensure all
classes of a certain type are structured the same way.

At this stage I'd much prefer simplicity over abstraction. We are
already rather deep.

Fixes #332

asokoloski/zproject,taotetek/zproject,eburkitt/zproject,taotetek/zproject,keent/zproject,hintjens/zproject,zeromq/zproject,asokoloski/zproject,zeromq/zproject,zeromq/zproject,keent/zproject,eburkitt/zproject,hintjens/zproject,twhittock/zproject,taotetek/zproject,paddor/zproject,paddor/zproject,twhittock/zproject,paddor/zproject