Implement fetching transcripts using video ID

This pull request is a completed version of #43. Transcripts will now be retrieved using the transcript ID *or* the video ID, saving editors from needing to find the transcript ID.

Other changes:
* Updated the template accordingly  (this was TODO item 1 on #43).
* If an error occurs when loading the transcript, the transcript UI is not shown (this was TODO item 2 on #43).
* Removed some HTML code from the `.py` file and implemented error formatting in the template instead
* Added missing `URLError` import

Tested with:
1. Video that has a transcript and does not specify a transcript file id
2. Video that has a transcript and specifies a transcript file id
3. Video that does not have a transcript (In this case all that happens is a comment appears in the HTML after the ooyala player div: `<!-- Transcript error: No transcript was found for this video -->`
Right now this is a very short-lived cache, since it only persists for one request. Thus there is no need to invalidate it. Do you think I should change it to use Django's persistent cache (memcache)? That would save a lot of API calls to the 3Play server for a large course...