This MR adds a snapshot method to the SiaFile as described in #3311 (closed).
Depends on !3319 (merged) for the OnComplete method to update the AccessTime of the SiaFile. That allows us to avoid passing a whole SiaFile into the download.
Closes #3311 (closed)
This will create a new commit in order to revert the existing changes.