on search by watcher load user when possible

Load user when we know that this will be one user record.
This allows us put id into SQL instead of name/email address.

EmailAddress is unique, but we don't have unique index and
can not create one until we have solution for storing NULLs
in DB.

With the change mysql can better estimate number of records
in CachedGroupMembers table and pick better plans.
Merge branch '4.0/search-by-watcher-name-email' into 4.0-trunk