Check modified date and hash in datastore_upload

The datastore_upload command should try to avoid downloading and datastoring resources unless they have changed. It could:

* do a HEAD request and (if accepted) see if there is a last-modified header, check that it is more recent than the resource's last modified date
* after downloading check to see if the hash has changed before datastoring