Document exactly which versions were used when generating the code.
Sympy is the most important so it is explicitly checked.
Also add an alternate generate script which uses `nix-shell` to make it
convenient to automatically use these versions.
Add a shell script to run the generate_1.py file. Foresight tells us
that we will need multiple such files.
Also ignore the generated code files as they are already out of date and
we are aiming to document provenance and make them unnecessary anyway.