Bugfix: Add safety checks to font_for_string

* Before font_for_string would fall over if you called it with a missing
  or empty font. Furthermore, it's behavior when called for an empty
  ustring was not intuitively obvious.
* This corrects both behaviors with explicit checks.
* Adds a WARN level log event when it fails out a font for being empty
  or missing, so that a human can correct the situation.
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/'.