web-widget/autocompleteUser.js: IE7 compliance
add webservice "allGroups"
exact search on uid and sn if less than 4 chars

limit the number of answers of getLdapInfoMultiFilters: even if there is multiple filters, the total answers must be limited by sizelimit
(it was mostly unnecessary until now since the number of results for first filter was 1)
cleanup: web-widget/autocompleteUser.js: create helper function "highlight"
search on exact "mail" or "uid@..." if token contains @

especially useful when autocompleteUser.js is used on an <input> wanting a mail
add a timelimit to ldap search on people (may be used elsewhere too)
code cleanup: web-widget/autocompleteUser.js: use "===" instead of "=="
common.inc.php: fix warning on undefined $groupsStructures

NB: getGroupsFromAffiliations must be called even if $groupsStructures is empty since getGroupsFromAffiliations creates global groups (eg: "affiliation-student" containing all students)
web-widget/autocompleteUser.js: display warning message even if no answers

the previous implementation could not display a warning if there was no answer.
new implementation is much cleaner :)
web-widget/autocompleteUser.js: display an error message when the web service fails
common.inc.php: for plain groups (ou=groups), ensure "name" is non-empty, defaulting to the "key" value if needed
search*: do not defaut maxRows to "0" which means no limit
getSubGroups: implement getting subgroups of diplomaPrev-*
allGroups: add the modifyTimestamp of groups
code cleanup: create helper function array_flatten_non_rec and use it
code cleanup: rename getGroupsFromEduPersonOrgUnitDN into getGroupsFromDiplomaEntryDn (for future re-use)
code cleanup: create helper function getGroupsFromSeeAlso and use it
search on groups: ignore groups with empty "cn"
"search": return supannEntiteAffectation for users the way searchUser already does
"search": return "category" code of groups