Generic linked list implementation

Data agnostic linked list using reference counting to provide both implicit sharing and copy on write. It includes unit tests for it, although that is something that can always be improved.