Function MDFile returns inappropriate result if IO error occurs
Consider this piece of code:
```pascal
program test;
uses
md5;
const
nonexistingfile = ':non-existing:/\|'; //should not exist on any system
var
Context: TMDContext;
Digest: TMDDigest;
begin
writeln(MDPrint(MDFile(nonexistingfile, MD_VERSION_5)));
//basically the same as:
MDInit(Context, MD_VERSION_5);
MDFinal(Context, Digest);
writeln(MDPrint(Digest));
end.
```
It outputs:
```
d41d8cd98f00b204e9800998ecf8427e
d41d8cd98f00b204e9800998ecf8427e
```
I don't think a non-existing file should have a valid MD5.
The issue is caused by the fact that inside `TMDDigest()` if opening the file fails, the function does not exit with some sort of result indicating an error, but just finalizes the context.
Maybe in case of error it should return Default(TMDDigest) instead?
Originally reported on [the forum](https://forum.lazarus.freepascal.org/index.php/topic,70497.0.html) by user Tommi.
issue