WIP: mostly complete solution to puzzle

This is a solution to the "river crossing" puzzle: a farmer must cross
a river with a dog, chicken and grain but can only carry one item at a
time. The dog will eat the chicken if left alone and the chicken will
likewise eat the grain.

No tests yet although this would be a perfect TDD situation because the
public API is fixed.

This was started under a strict time constraint and was rushed.