Re-implemented Symbolic using concurrency.

The goal is to handle infinite queries correctly at last.

Note: THIS IS BUGGY. I have an example where it says Unsat, even though it is
satisfiable. I'm checking it in because it compiles now.
Fixed bugs in threaded symbolic implementation.

It appears to do well performance wise.
Merge branch 'master' into threaded
Merge branch 'master' into threaded

Conflicts:
	smten-lib/Smten/Compiled/Smten/Symbolic0.hs
Merge branch 'master' into threaded

Conflicts:
	smten-lib/Smten/Compiled/Smten/Symbolic0.hs

Note: the yices1 test doesn't pass. I'm confident this is not because of the
merge, but instead because we are now catching bugs that were hiding before.
Found a couple bugs in threaded runtime.

I haven't checked yet to see if these fixes fix any of the problems I was
seeing before.
Fixed bug in bind_symbolic.

Not clear if it fixed any visible problems.
Factor out code for dealing with concurrency.
Implemented different strategies for concurrency.
Add some support for auto-deriving of show.

It's a little clunky, but I blame that on template haskell.