Wrote a function to convert an Expr to an LVal.

In preparation for supporting reference arguments. The function isn't
used yet.
Add a way to indicate if an arg is a reference argument.

Currently that indication is ignored.
Add support for reference arguments.
Add support for calling void functions.
Support empty return statements: return;

Now the void tests are fixed, except a bunch of them still need to be
reclassified.
Reclassified the rest of the working void test cases.
Add support for += operator.
ExprS can take an expression of any type, not just void.
Implemented a hand-coded yices2 sudoku solver.
Implemented hand-coded yices2 solver using enum.
Reclassified more test cases.
Finished classifying all old 'void' broken tests.

Also improved unification for array types.
Implemented Algorithm 2 from paper.

And added a command line switch to choose to use it.
Implemented Algorithm 3.

It looks like it performs much better, at least on the few I tried.
Accept -k0 and -ki command line arguments.
Always use algorithm 3.

Because it's pretty clearly better than the others.
Make the free state constructor part of the model.
Factor out common path construction.
Change transition to be s -> Symbolic s instead of a predicate.

Which should give more opportunity for optimizations in smten.
Updated benchmark results for model checker.