Bugfix: Avoid s3 upload redundancy

This should land only after #30 because it can't be manually tested without that, so it's based on top of that.

Bugfix: Avoid s3 upload redundancy

* If you run the previous version of create_pdfs with a long course list and s3 uploading turned on, you'll notice that the upload routine re-walks the working directory tree for every generated cert. This means that as we get further into the course list, we do more and more uploads per cert.
* This starts the tree walks from the temporary directories for the current cert specifically, which makes the number of uploads linear in the number of certs.
* Also, memoize s3 connections, rather than creating a connection for every upload.
* Also, layout fixes for readability.
* Also fixes cleanup routine to only delete the working directories and their contents, rather than their parent. This makes it safe to set TMP_GEN_DIR to, e.g., '/var/tmp/'.

@stvstnfrd I think you'll be happy to see this?
Stylistically, I prefer to use double-quotes for interpolated strings
(like this) and single-quotes for "constant" strings (in languages where
the two forms can be used interchangeably). This extends from shell
syntax.

Above, you're using double-quotes for a format string, so I'd like them
to at least be consistent. Personally, I'd like to see these as doubles.