Delete orphaned uploads

If an upload is incomplete, it takes up space in the upload database and in the assetstore.  For S3 assetstores, these count towards disk usage even if never completed.  Two endpoints were added: system/uploads GET and DELETE which list an discard these partial uploads.  The uploads can be filtered by upload ID, user ID, parent ID, assetstore ID, and minimum age.  They can include untracked uploads (which can occur, for instance, on S3 if you had deleted the assetstore prior to this and then recreated it).

Partial uploads are deleted when an assetstore is deleted.

The web client S3 uploaded is now partially tested.
This should be a field on an assetstore; we could conceivably support multiple S3-compliant providers via multiple assetstores. This means we should have a "host" and "port" field for S3 assetstores, in addition to what we have now.