Added easier to follow test cases
Two new test cases work now

The first issue was that I misunderstood the constraints and gave the test the
wrong answer.  Once I fixed the implications, then I got the answer I expected.
I went through to simplify the algorithm by pushing all remaining possible
values down the stack (instead of just ones that were constrained).  This
premature optimization was making the algorithm more confusing.
More tests, good performance (even on contrived worst case example)