Filter out user-inaccessible projects in the language overview

Fixes #13.
Added convenience `is_accessible_by()` method
Use `is_accessible_by()` method
Simplified code
Removed reference to non-existent field
Nit: removed extra whitespace
Don't rewrite project's cache all the time

This probably ended up here because of an indentation error, otherwise it
makes absolutely no sense.
Free way for admins
Cache list of user project codes rather than project objects

Since now codes are being used to determine if access can be granted (and
not objects), this avoids unexpected behaviors when a project has been
accidentally deleted and created again. Access will be granted if the
project code still matches.

Note that since the `for_user()` and the `accessible_by_user()` methods
now return project codes rather than objects, they have been moved away
from the Project manager to class methods.

Also, this requires less memory and the whole project objects weren't
needed anyways.

Fixes #14.