Add node list struct.

The node list struct simplifies working with lists of nodes and will
allow us to build more complex things with node lists in the future.
It seemed prudent to make this change now as the lang tag is
introducing a number of complexities which need us to refactor code.
Due to this it is a good time to make this change.

This will be good to get in before 0.5 which will hopefully be in the next couple of days.