Add optimization to check for structural symbolic equality.

I don't have any reports of improved performance, just verification that this
gets rid of things like (f~8 == f~8) in generated queries.
Make State and Reader newtypes.

Improves shampi performance by 33%.
Update State and Map to match better the haskell libraries.
Add an instance of Show to Smten.Data.Array.
Use type synonyms to abstract STP FFI data types a little bit.
Fixed memory leak in stp.
Implemented strict version of state monad.
Tried again to support -O pre code generation.

Not much progress made.