md5 checksum comparison for remote vs local

+ Fixes weak file comparison by comparing md5 checksums as a fallback
(to avoid expensive ops) after file size and lastModTime comparisons.
```go
if f == nil {
  return ""
}
if f.Md5Checksum != "" {
    return f.Md5Checksum
}
return checksum.File(f.BlobAt, crypto.MD5)
```