Add some failing n=5 tests.
Rewrite previous contains2 tests to use gets function.
Refactor to create _contains, that gives reasons for failure.  Add tests for _contains.
In testing discover ThisCannotHappen bug.
Fix bug should be mass_1 - mass_2, not vice versa.  It's a BLUNDER.
Find bug in _helper, which might explain bad output.
Resolve bug in helper, which fixes known bad output. It's a BLUNDER.
Change expected output for compute.pya nd constants.py.  Should have been part of previous commit.
For #2 add tests that should succeed - we're missing an expected contribution.
Change code to give correct values for n = 5, and adjust tests to suit.
Add shift_1_pairs and shift_1 (in fibtools.py, with tests).
Add slide_1_pairs and slide_1 (in fibtools.py, with tests).
Add shuffle(i, j) to fibtools.py, with tests.
Add slide(shape_data) to fibtools.py, with tests.
Add compute(shape_data) to fibtools.py, with tests. (TODO: Check expected values.)
Add script to compute CD-rules from CD-basis.  Previously prepared, added as issue4.py.
For #5 add tools.cache_function and tools.missing_dict decorators.  Might not use missing_dict.
For #5 replace self_extending_list by cache_function.
For #5 add test issue4.py, rewrite main issue4.py so that can be imported without writing to stdout.
For #5 use cache_function to refactor CD_G and G_CD (in new file issue4tools.py).