Add fatal errors

If the function passed to Try() returns a FatalError then the function
won't be called again and FatalError.Error will be returned.