PRODUCTION: trust IP of sifac-tse.univ-paris1.fr
autocompleteUser.js: checking keyCode.NUMPAD_ENTER is invalid on keypress, it must be done on keydown

this fixes key "l" being ignored on some computers
handle multi-valued supannEtablissement + display key when it can be useful

example: display
  Réseau Professionnel Paris Universités [PCU-ReseauPro]
instead of simply
  Réseau Professionnel Paris Universités
handle supannActivite user attribute
if supannEntiteAffectation-ou is asked, keep raw supannEntiteAffectation

that way it does not break backward compatibility for apps requesting supannEntiteAffectation.
but for apps requesting both, we can keep raw supannEntiteAffectation
code cleanup: create helper function isPersonMatchingFilter() for future use
searchUser: handle supannParrainDN & supannParrainDN-ou
supannPerson: employeeType is multi-valued
code cleanup: wrap code to fit on 80 cols (for "git diff" readability)
supannPerson: supannRoleGenerique can be multi-valued
code cleanup: use getAndUnset
asking for supannListeRouge does not mean ListeRouge is not allowed

without this fix, even if you allowListeRouge, anonymizeUser() was called when asking for supannListeRouge
supannUser: handle newlines in postalAddress
cleanup: create helper function and use it (for future re-use)
search groups: search a la google (each words searched separately)
search groups: allow filtering group categories (example filter_category=structures)
cleanup: create helper functions (prepare for adding autocompleteGroup)
add webservice "searchGroup" + autocompleteGroup web-widget
WIP