Finished basic implementation of linked list

* add_node works as the caller would expect (no superfluous nodes)
* remove_list frees all memory not being used to point to the head of
  the list
* Some burden was moved to the caller of cartesian_product as needed