Track unreachable values explicitly.

Instead of using _|_. This way we can know locally that
ite p x UNREACHABLE is 'x', and hence, need not be symbolic.

This fixes the remaining gen rule rel performance bug for arch-extract.
Partial work on fixing inconsistent naming conventions.

It has a ways to go.
Improved naming of IntegerFF constructors.
Some more naming improvements.
Added test cases for recent performance bug fixes.

I haven't tested the test cases. I hope they work.
Captured sketch performance bug in SMT.Opt.IntShare test case.
Add support for strict constructor fields.
Identified arch-extract performance bug.

I don't have a fix yet.
Minor documentation updates.
Remove strictness fields on Data.Map.

Because it leads to a performance issue with sketch I don't want to deal with
right now.
Perform realize by rerunning the symbolic computation under the model.

Rather than having each type have a method for realize.
This has a number of nice benefits, including:
 * there is a lot less code involved
 * we can now do IO correctly without boxing it
 * we should be able to do performance optimizations which otherwise would
   have been too eager.
Removed unused optimization from ite.

The optimization shouldn't be there, because we don't need it for all types.
Only for the base types.
Improved naming some. Restored accidentally deleted AnyMap.hs.