Add size parameter to the linkedlist struct.

The tests check for this size as well.  Managing the size is straightforward
except in the case of crossing two lists, in which case a list can exceed the
max in size.  In that case, the list needs truncating.

Reuse of the walker() function, for better readability.