Correctly ignore invalid / incomplete snapshots.

OptionT is good, and isn't really the problem here (although with this change it possibly isn't that useful here any more). The issue is calling a traverse when you are trying to "find" the first success case rather than mandate that "everything" is a success case. This is something that crops a bit and hence https://github.com/ambiata/ivory/blob/master/ivory-core/src/main/scala/com/ambiata/ivory/core/Lists.scala#L6 which will be useful once this gets a bit tidier.