* fix fetching areatriggers from DB and calculating found matches
* fix Lang concatenating an array of strings with len < 2
* don't show debug-id col in picker windows (Summary/Profiler) and sort them by score if able
* unlink quick facts from articles and store per-row
* new system allows generic and manual QuickFacts to coexist
* fill new table with data for zones
* if someone used static quickFacts .. uh .. good luck?
* the great unfuckening of user and displayName
* `login` is purely used as login with AUTH_MODE_SELF
* `email` may now also be used to log in (if the system knows it)
* `username` is purely used for display around the site, and lookups from web context
* both must exist because of external logins
a) that may be not unique
b) you may not want to share with the rest of the world
* todo: implement rename ( because of b) )
* create php classes, each mirroring a js object
* each frontend class implements __toString and json_serialize and as such can be directly used by the template
* also allows for sane object creation before js screams in agony
* usage TBD
* skip out of List construction if realms are empty or do not match preselection
* also prefilter Guilds and Prolfiles Lists for server or region (unless custom profiles)
* discard ProfileList entries for inaccessible realms
* test arrays first before use, not the other way round
* do not try to init local arena team entries if there are no entries in list.
* fix equally distributing chars/guilds/arenateams across realms for unlimited (0) lists
* fix double declaration of realms in ArenateamList
* update spell attribute descriptions primary from TC, secondary from Wowdev Wiki (not guaranteed to be correct for 335)
* show all attributes on SpellDetailPage
* update links from attributes to SpellFilter
* unsure: should the attribute filters work purely on attributes or also consider other factors?
* implement some of the client side modifiers on the spell tooltips and buffs
* followup on 748a78c3c7
* fix return type of criteria filter callbacks (mostly in case of faulty input)
* spread the criteria var into criteria filter callbacks
* some magic numbers to constants and type declarations for params/return types
* add 'fished' as valid item source
* item source 'none' now properly selects items without source, not items without source from this list
* fixed edgecases where filter callback might have no return value