Better errors

Change the Left value to contain all of IResult's information.

I am pretty sure this has no performance impact unless somebody forces the Left value (in which case the cost of computing the error message should be very well justified).

This should help with #49.