Add conversion functions.
Working on naming + a tiny change.

What to name the ADT object? Previously, I used to name the object
simply p. Short and concise. After some discussion at Tandberg, where
some people prefered self over p, I had to re-think the concept.

For now I use the name 'this' to name the ADT object functions belong
to. 'this' may sound as a C++ construct, which it also is. But the name
is also used in C#, java, D, PHP and Perl.

One alternative name, 'self', is used by Smalltalk, Object Pascal,
Python, Ruby, Objective-C and Swift. 'self' is a good alternative to
'this', and I may change the names later on.

What about the tiny change? The tiny change is that we now explicitly
specify the dtor when calling list_free(). This is needed so we can
change the behaviour of list_free() to *not* free when no dtor is
provided.