Fix for setting Announcement cache

Setting None doesn't seem to work, cache.get() treats it the same as
if they key was not present.  Using 0 seems to fix things.  This saves
us a query on basically every page view.
Cache the messages and top menu bar for each user

This reduces about 3 queries for each page for logged in users.
Added code to handle user cache

The main reason to do this is to optimize our memcache fetches.  Since
we know we are going to want to fetch several keys, we can use
get_many() to fetch all cache values at with one trip instead of
multiple ones.  It's probably not that important considering we only
have 2 keys right now, but it will get more important if we want to
cache other things per-user (which I hope we can do).

Also it simplifies the interface a bit and handles creating unique
keys per-user.
Fix deleting cache for bulk messages
Fixed JS tests
Fixed save draft button (#1797(

Correctly send complete=False to the API endpoint.

Renamed save() to saveDraft().
Removed a couple unneeded calls to can_user_see()

I'm going to refactor this code, so I figure we should delete the
cruft first.

We don't need it inside the video or language page, since the user
shouldn't be able te view the page at all if that's the case.

Deleted can_view_version() which is not used anymore.

Removed can_see_video() check from can_view_private_version(), since
the check for membership is a stronger assertion anyways.
Replaced Video.can_user_see() with subtitle workflow method

This gives us more flexibility, since we can define different checks
for each workflow.

Added a Video.get_workflow() method that gets a workflow and caches
the result.  Refactored code in the video view decorators to use the
new system.  Removed some old/dead code while I was at it.

There was one reference to can_user_see() in the teams permissions
code.  I'd rather not touch that code too much, instead we should just
delete most of it when we get rid of tasks.  Replaced the method call
with code that does the same thing.
Merge branch 'staging' into speedup-general
Couple more message cacheing fixes

Delete the top-panel cache when we get a new message.  We want to
update the new message count in that case.

Don't try to cache User.unread_messages_count().  That code wasn't
correct because it will return the same value regardless of what
hidden_message_id is passed in.  In any case, the new caching code is
better so we can just get rid of this.
Merge pull request #1824 from pculture/gh-1797

Gh 1797
bump up commit ids
Merge pull request #1826 from pculture/video-view-permissions

Video view permissions
Merge pull request #1827 from pculture/speedup-general

Speedup general
bump up commit ids
make config_env update requirements
updated commit id for optional repos
Merge branch 'staging' into production