Implemented special handling of single lit clauses

Preparation for two-watch literal scheme implementation
Work on 2-watch literal scheme

Does not work, need to fix conflict handling (and perhaps backjumping
as well)
Working on 2-watch literals scheme

There is a bug that causes an infinite loop, which is probably related
to conflict resolution.
Removing debug traces
Two-watch literal scheme implemented

It is slow and uses a lot of memory.  Need to work on performance.  I
will switch the formula to a sequence so we can index into it for
clauses, add watch lists, and change clauses to sequences as well.
Clauses now use Data.Sequence instead of lists

There is some kind of infinite loop bug or this version is really
really slow
Fixed some bugs, found another

I believe there is a problem with the way watches are being updated.
Occasionally, a literal that is False in the literal trail makes its
way into the unit propagation queue, which needs to be fixed.
Fixed bugs, now properly implemented

Around 10x slower and 100x as much memory as the old version with naive
clause handling.  Profiling to find the cause
Vastly improved performance

Now runs only ~.3 seconds slower than the old version with around 5-6x
as much memory use.
Slightly decreased memory usage
Switched uses of Data.Seq to a simple list

Now uses half the memory and runs around .5 to .6 seconds faster than
the old version.
Merge pull request #1 from el-devo/list-two-watch-literal-scheme

Switched uses of Data.Seq to a simple list
Switched to Data.Vector for clauses

Can index into them faster to fix the issues with lazy watch swapping.
Is now roughly .2-.3 seconds slower, but uses about the same amount of
memory.  This should work better with watch lists.
Added watch lists.

Slightly slower and uses a bit more memory, but doesn’t chew up space
over the lifetime of the program, which is nice.  Performance needs
improvement.
Now uses explicit watch1 and watch2 maps

Performance is fantastic, now runs more than twice as fast and uses
about half the memory.
Fixed prefixToLevel bug, changed main benchmark
Switched to smarter literal trail data structure

Now about twice as fast and uses 75% of the memory of the previous
version.  However, this version is proportionally less memory
efficient, spending around 30% of its time in garbage collection.
Merge pull request #2 from el-devo/two-watch-literal-scheme

Two watch literal scheme