app.py: Use explicit transaction boundaries in most places
initiate_upload(): Handle single-request uploads.
process_upload(): Handle Content-Range header
Adjusted HTTP response codes in various places to satisfy the conformance tester.
get_blob: Move get_repo call outside of db_session.begin()
manifest.py: Add placeholder support for application/vnd.oci.image.config.v1+json manifest format, which is used by the conformance test. I don't think such configs reference blobs directly.
hammer.py changes Use a larger upload chunk size for performance. Collect and report timings Collect and report error count. Exit non-zero if errors detected.