bikeshedding

maybe_node now contains reason for failure
    maybe_node had 4 wasted bytes, might as well use them

diff algorithms now return maybe_node
    so that failure states can be specified instead of generic diff failed