Big patch. Arbitrary instance for ProcScript. Projection property of the Substitution Optimization has been tested with QuickCheck (see tests/optimize.hs). Method quotRem is now working, which fixes #1. Thanks to QuickCheck, I found a bug where optimization crashed for some inputs, due to a corrupted Ord instance of Proc_Int. Function isCheap has been hidden.