[FIX] model: The user install / update / test is different from the normal mode (no prefetch in test mode) some errors are hidden.
[FIX] res.users: use read method to compute default values to don't create browse record and fetch all fields, browse record crash for install or update module
[IMP] model: when the orm create/update a table check if they are at least one row of the table to load column default values
[IMP] mail: speed up filtering of mail.group menus

Replacing the browse+search speeds up
the filtering 50x, which is significant
for a method that may be called on most
page loads as soon as the user is
logged in.
[IMP] base, mail: cache user.has_group() + ir.ui.menu.load*()

Loading the menus is the most expensive
operation for an average page load, and
the result does not change often.
The menu filtering already uses a separate
cache based on groups, but the rest of the
loading includes reading actions and
translating menu names, which is also
expensive.

Added a cache keyed on user + user
lang, plus relevant cache invalidation
when any of the following are touched:
access rights, user data including
groups and language, menus or mail.group
subscriptions.

The menu filtering cache is still
useful in parallel has it is invalidated
under different conditions.

User.has_group() is cheap but still
called very often, so it is an easy
win as well, and also frequently
used when rendering page templates.