Quick and easy doubly and singly linked immutable list implementation that allows for inserting, removing and shifting.