Another way to approach BoxProduct

Now we implement it as a equivalence classes of free products.
BoxProduct works for Lattice4!

Tested against Mathematica derivation. Added notebook from previous
project and added new section. Also added file describing the set.

Can use it as a reference for improving performance of reduce.
Probably more efficient implementation of reduce

The old one remains in comments and should still work when uncommented.
Mathematica notebook update

Added tests of BoxProduct generated by haskell code.
BoxProduct optimizations
Static 2-2-box-world data structure
Program manipulating 2-2-box-world static structure