Make the intrusive list a template class

The Link expresses the property that an object has a next_ element;
the derived classes need not be templates.
Make the list contain different types

The Link class only gives the property of having a pointer to next
(plus some fancy Print virtual function). Now the intrusive list
contains any LinkableType, which is a type derived from Link.

Now for the hard part: how can we generically compare a given element
with the elements in our list?