Fix for second level cache miss when IUser implementation have no Equals/GetHashCode overrides

When IUser implementation does not override Equals/GetHashCode, Rhino Security queries (like from IAuthorizationService.IsAllowed) miss the second level cache and go to database each time.

I'm not sure whenever overriding Equals/GetHashCode is mandatory/best practice when working with second level cache,
but if Rhino Security would consequently use Restrictions.Eq("user.id", user.SecurityInfo.Identifier),
as now it sometimes use that and sometimes Restrictions.Eq("user", user),
it would use second level cache even without proper Equals/GetHashCode on IUser implementation.

Added test and fix.