Fixes for using cached users

Just use the DJANGO session key instead of our own one.  For all the
backends that we use, the value will be the user id.  Previously there
were issues surrounding the session value staying around after
login/logout.

Handle anonymous users, which stores None in the session.

Handle DB lookup errors.
Fixed exception when setting the primary audio language