Create singly-linked list implementations.

Create two singly-linked list implementations - one which exposes the
internal representations and one which does not. Both implementations
make use of a common singly-linked list node type.