Eliminate version query from title_display() (#1463)

This was actually very easy since we already were setting Video.title
from the version for the primary audio language.  The query in
Video.title_display() was completely redundant.
Removed logging statements
Fixed issue updating Video.title with tasks (#1463)

Added code to fix it and also a migration to fix legacy data.  I've
already run the SQL for this migration a couple times on production so
when we deploy it shouldn't need to fix too many rows.

Also fixed issue running video_changed_tasks() when completing tasks.
I'm not sure what happened with the old code, but it looks like an
editing error caused totally crazy code to be there.
Added management command to fix blank video titles (#1463)
Merge branch 'staging' into gh-1463
Fixed unittests
Fix for setting video titles.

The new code sets it in SubtitleVersion.save() and
SubtitleVersion.publish() instead of pipeline.add_subtitles().  I
think that's a better place to do the work and I believe it fixes the
bugs that janet was seeing.
Couple of fixes for setting titles

Set subtitle_visibility='private' for TaskAction.  This makes it so we
don't set the title before the subtitles are published.

Fixed how we set video metadata.  Before both the SubtitleLanguage and
the SubtitleVersion were trying to make changes to the video and save
it.  However, they both had a different video object, so the changes
were clobbering each other.
Removed some cruft from the TERN update days
Update video metadata like we do titles

This change makes it so when you publish a SubtitleVersion in the
primary audio language, we update the video's metadata just like we do
with title.

Refactored save() a bit so that we can save the metadata with the
other changes.
Slight tweak for SubtitleVerion.get_metadata()

If the previous version's metadata is blank, and the version is for
the primary audio language, then we use the video's metadata value.
This fixes a bug that janet and I both saw, but can't really
reproduce.  In any case, I think this method is a bit better.
Reorded the subtitle upload dialog buttons
Fix for SubtitleVersion.save()

It now just ignores metadata when passed metadata=None.  This fixes the
unittests and a bunch of other cases.
Fixed metadata tests to reflect the changes
Fix subtitle actions with tasks

Added TaskSaveDraft action, which correctly sets subtitle_visibility
to private when initially creating the version.

Use Publish() action for post-publish edits.
Fix webdriver test

Changed it so we don't update the video title when title=''.  I think
that the API user should always send a title, but it seems OK to still
have the check.

Updated webdriver test to check for the updated speaker name.
Removed AHAH tab loading

This code is pretty complicated and will get more complicated once we
try to cache things.  Once we have better caching I don't think we
really need it anyway.
Groundwork for better video page caching

Added the CacheGroup class, which will handle storing cached data for
a video.  I also plan to use it to replace the UserCache class.

Added a bunch of documentation about how it works.

Added a utility class to create codes like our video ids and editor
nonces.  I figure we use this often enough that it's good to put in
utils.
Added cache to Video objects

This uses the CacheGroup code from the caching app.  Right we don't
actually store anything in the cache, but the code to invalidate it is
correct at least.

Allow subtitles versions to be unpublished even if they are not part
of a team video.  I think this should be allowed in theory and don't
like that it made the subtitles app dependent on the teams app.
However, the main reason for the change is to make testing things
simpler.

Bump enterprise version to pull in a fix from there
Use CacheGroup for the user cache

I think all everything is in place now and we can implement the actual
speedups now.