Always return a complete dict in custom_context_processors

Solves #1462. Depends on #1470. Only the last commit is relevant. Old logic is basically return an empty dict on the custom_context_processors if there's no `default_language` in the session. Now, we have a hierarchy of defaults on which language to use: either look in the session, look into Settings, or default to `en`.