Second version of c linked list

This version has 2 main changes:
  1. Used partial types so that the representation is not visible to the user.
  2. Passed in a toString function pointer to let the user dictate how the elements in the list should be printed.
However, it still does little to no memory de-allocation (ie I don't provide a free method for either the Chain or the ChainNode.)