not really working version
Moved implementations of interfaces into the headers
Templates are now ready

The trick was to forward declare the LinkedList in the LinkedPosition
Header to solve the circular dependency problem.

The implementations of the main method and so forth are no good. I just
wrote them to test the working of the Templates.
Implemented LinkedList - Untested!

I had to modify the interface somewhat:
 - renamed size() to getSize() because of a naming conflict with the
   size variable
 - remove() now returns a pointer to the object at the position to be
   removed. The problem here is this:
    If I don't delete the position, it might never get deleted and thus
    lead to memory leak. So I want to delete the position. That makes
    sense because the position belongs to the LinkedList. However I do
    not want to delete the object held by the position - the user
    might still need it. But if the user doesn't have a reference
    anymore and I don't destroy it, this would to a memory leak as well.
    So what I do is return the object. The user can then easily destroy
    it if they don't have any use for it anymore.

All functions where you pass a position can throw exeptions.
 - In order to properly use the positions, we have to cast them to
   LinkedPosition. If it's not actually of that type, an exception will
   be thrown.
 - If the position does not belong to any list at all an exception will
   be thrown.
 - If the position gelongs to a list other than ours, an exception will
   be thrown.

I tried to make the functions return by reference instead of return by
address. This would be saver in many cases. However: first() and last()
return NULL if the list is still empty and one is not supposed to return
NULL by reference. Only doing some methods return by reference and
others not did not seem to make a whole lot of sense. The alternative
would be to throw an exception if the list was empty. But that's not a
beautiful thing to do either. Really it's a decision between three bad
options :(

InvalidPosition can be used to test the behaviour when a Position that
is not a LinkedPosition is passed to the LinkedList.