Uploading release artifacts directly to PyPI from the build matrix is
bad, as this may result in an incomplete or broken release if any of
the platforms fail to build.
To fix the process, implement a "staged" build process whereby artifacts
are built from a dedicated "releases" branch and are uploaded to an S3
bucket. Once all artifacts have been successfully built, the release
tag may be pushed to master, and the previously built artifacts will be
uploaded to PyPI as a single transaction.