Raise AssertionError for programming error

It's not a RuntimeError - in a static language a missing branch for an
enum value could be detected at compile time.
Replace boilerplate loop with map
Only check for one token match

Also removes unnecessary -e
Retrieve and subtitute Google Drive URLs

Unlike Google Code, Google Drive URLs are based on file IDs, not
filenames. These cannot be built with the build tag or build number as
before. This adds a --skip-upload flag to upload-to-google-drive.py that
causes it to only output the URLs. This file must be present in order to
run deploy-website.

As a possible simplification one could assume that the format of the
permanent ("webContentLink") to the file will not change. This would
mean the output need only include the file ID. Under the assumption that
file IDs will not change to include slashes, this would remove slashes
from the substitution value and make using sed practical again.
deploy-website uses "replace" in addition to sed now as it allows
replacing fixed strings. This is messy because replace is a MySQL
utility.

See https://developers.google.com/drive/v2/reference/files