More work on row linking to initialize the lists.

I'm commiting this now as the last version before a major refactor.
Mostly, I want to separate the algorithm from the initialisation logic.
Coming changes: abstract column and row headers and nodes.
Added a general implementation of the dancing links algorithm: untested.

Also added a specialised version for the sudoku puzzle,
including initialising the constraint matrix based on
a given grid.