Flattens the result of result; i.e., Res<Res> -> Res, by mapping:
Err => Err,
Ok(Err) => Err,
Ok(Ok) => Ok.
C#
Res<Res> nestedResult = Err<Res>("msg");
Res result = nestedResult.Flatten();
Assert(result.IsErr and result.ErrorMessage() == Some("msg"));
Res<Res> nestedResult = Ok(Err("msg"));
Res result = nestedResult.Flatten();
Assert(result.IsErr and result.ErrorMessage() == Some("msg"));
Res<Res> nestedResult = Ok(Ok());
Res result = nestedResult.Flatten();
Assert(result.IsOk);