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 evernote/pootle#14.
Filter out user-inaccessible projects in the index page
Docs: The view permission change is post 2.5.1