Improve error handling

The old code meant that find_in_file() would die() when the file was
not found. It is normal for md.log to be unable to be found when (say)
grompp failed because (say) a warning was added. So this should not
cause the test harness to try to exit completely. Returning a value to
indicate that no match was found is a reasonable behaviour. Other
clients of find_in_file() are mostly of grompp.mdp and shell
redirects, which will always exist (and also, they didn't depend on
the death behaviour being changed here).

Also fixed the top-level map { eval }, so that it properly implements
a try-catch-throw pattern. This means that error messages from die()
are not swallowed silently. Not doing this causes mysterious problems
if an error condition uses die(), because the working-directory
assumptions of the next statement in the map { eval } can be violated.

Change-Id: I27665a6e7e7bcbe3801eb024605aac0fa8c51d0f