Second tuple expansion pass based on statistical analysis

The representation is a bit particular: expanded tuples (`X` in the
source code) are prepended with one tuple, which itself contains tuples
of correlated fields. In a sense index 0 represents the entire tuple,
and the 'features' of the entire tuple are in fact tuples of related
features of it's individual components. For example, here's a valid
tuple after prepending:

X = (((6, 12), ("A", "AA")), ("A", 6, 1), ("AA", 12, 1))

Discrepancies are reported in this coordinate system, with models that
only care about multidimensional data being able to immediately discard
all but the first field of the expanded tuple. The printer has been
modified to be aware of this structure, so that it can both highlight
the relevant fields properly, and print the relevant info in verbose
mode.
Add bookmarks and pretty typography
Add latex temp files to .gitignore