additional handling of function object failure
As raised in EP1338, the change of sampled surfaces causes a different in later OpenFOAM versions.
In the earlier versions, if the surface was out-of-domain (wrong location, but most likely incorrect scaling), this would fail on construction which would emit a warning and discard the function object.
More recent updates for sampling are much "lazier" - they only construct the surface as required. This is particularly useful in cases of an iso-surface for a field that does not exist until later in the simulation. However, as a side-effect of this, the failure can now occur during execute() or write() of the functionObject, which means that even if the dry-run was successful, the job can crash because of the bad function object.