Make sure the goals on the shelve are identified as goal and unresolvable for typeclasses.

This was not the case for goals created at the end of the tactic by salvaging the [future_goals] from the evar map. It would cause typeclass resolution to try and solve these goals (if they have a class type) at each subsequent tactic.

Fixes #3841.
Add Ltac syntax for the [tclIFCATCH] primitive.

[tryif t then t2 else t3] behaves like [t;t2] if [t] has at least one success, or [t3] otherwise. It generalises [t||t3] as failures from [t2] will not be caught.