attempted to recover stashed Makefile
recovered remaining stashed changes.  trying to fix merge conflicts.
Fleshed out data structure and code to check whether it is a latin-square.

Hand-made some latin squares by hand to check that code; have not put
in searching code to find latin squares in general.

Also, the current instance of the data structure has only been shown
to represent a full (potentially non-latin) square, which you operate
on by swapping elements.  Later I might want to put in a more general
instance that allows for unfilled slots.  (Hopefully that can be done
as a more general instance of what is already here.)
Got rid of the unused alphabets that squares were carrying, in
preparation for the separated representation.
Added separated-variant formulation of Latin-Squares.

The essential idea is to apply the same "no repeats in row or columns"
on the left and right squares, and then add the additional constraint
that the left and right squares are "orthogonal", which means that no
pair appears twice in their product `left * right`.

Addressing this made me realize that the previous `is_latin` had a
bug, in that it assumed that the input would eliminate duplicates by
construction, which of course is not generally enforced and thus
should be checked.

Added additional way to print the product squares, which hold tuples,
but without using the more verbose `(x, y)` output format.  Achieved
this by adding a level-of-indirection via a `ElemToStr` trait.
Added code for finding transervals of a matrix.
Filled in more code for latin-squares experiments.  Current code is
totally non-scalable.
Code for notes on exact-cover problem while reading Dancing Links paper.
Revised termination condition to be just is_covered (i.e. num_cols == 0).

Added column labels and removed the hack of the fake all-zero row I
put in last night.
Replaced various debugging println!'s with debug! invocations.
Refactored code in preparation for removing now unnecessary width field.
Removed width field.
Fixed bug (missing col label) in simple_exact_cover_instance_2.

(Also, uncommented simple_exact_cover_instance_2.)
Revised commentary.
Hacking up separate dancing_links module to hold DLX.
Expose some traits I am going to use in DLX code.
Checkpointing spot where I think I encountered a type-checker weakness.
Added a matrix mutation method (put) and exposed Matrix + some methods.
Checkpointing because rustc is ICE'ing on this input.
Cleaned up the code a little.  Added an allow(dead_code) annotation
because that lint is annoying me.