Decode: better effort in case of failure

Context: https://code.google.com/p/camlistore/issues/detail?id=493
Short version: when decoding fails because of e.g a particular tiff tag,
some/most of the rest of the decoded information could still be used.

This change is two-fold:

1) it provides some helper functions to diagnose the error returned by
Decode, and help decide whether the returned decoded information can
stil be used.

2) because sub-IFDs are independent, if parsing one of them fails,
the error is recorded but parsing the others is still attempted.