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
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 #1827 from pculture/speedup-general

Speedup general