Initial support for XDG cookie based sessions that will someday replace the old EUID based approach (issue #2)

- new rules/xdg_sessions.lua:
  + Determine if the process is member of a XDG session and set xdg_session flag
- modify scheduler mappings:
  + Use xdg_session label to find out if the process is being run by user.
  + Processes are still moved to cgroups according their EUID.

BUGS: in one-seat-desktop mapping, processes of same XDG session
but with different EUID will be labeled as user.idle, as the code
still determines active sessions by EUID. This will require bigger changes
in the session handling in C core.
workaround: we don't want su'ed / sudo'ed processes to be idle

This is needed until we switch from EUID based to XDG based sessions
entirely, mostly the ulatency.get_uid_stats must be replaced with function
that will check XDG session, not EUID of the process.
Update simple.d/sessions.conf (inactive_user.useless labels)

- update description
- add firefox and firefox.real next to firefox-bin - thanks Szpadel.
- do not inherit label for chrome
Merge branch 'master' into xdg_sessions
workaround: we don't want su'ed / sudo'ed processes to be idle

- add workaround to other subsystems
fix scheduling of {user,daemon}.idle flagged processes

daemon.idle: match only processes running outside user session
user.idle: match only process running inside user session
fix o-s-d mappings incorrect reference to user.game label with wrong user.games
limit user.* labels to users and {daemon,system}.* to system processes
Merge branch 'master' into xdg_sessions

Conflicts:
	conf/scheduler/20-one-seat-desktop.lua
Merge branch 'xdg_sessions' into devel
fix timestamp handling in DBUS setActive and setActiveWithUser handlers
a bit optimize process_new()
improve system_flags_changed/u_proc.changed variables setting on flag creation or removal

+ u_flag.urgent

(boolean) If TRUE, adding/removing the flag to/from an entity (u_proc or
system flags) will tag the entity as changed, i.e. u_proc.changed or
system_flags_changed variable will be set.

Default value for new flags is 1 (TRUE).

+ functions that add/removes a flag to/from entity (process or system
flags) get extra argument to specify if the entity should be tag as
changed, overriding default behaviour determined by flag.urgent.
Same applies for DBUS methods.

+ flag.inherit causes all children to be marked as changed
set_active_pid(): flag active processes

flag properties:
	name = "active"
	priority = <active list position, 1 for topmost>
	inherit = 1

Whenever the process position is changed the flag is updated and new
iteration scheduled. This allows match active processes and their children
in mappings.

Running scheduler iteration is slow, but to schedule affected processes
only, serious refactoring of filtering and processing code in core.c.
scheduler: implement "placeholder" cgroups

Put processes only in children cgroups, never in the "placeholder" cgroup
itself.
If the process won't match any of child rule, the rule will not match.

This allows the process to be check against multiple cpu cgroups "trees"
without the need of specifying all conditions on root rules. This way we
can create trees with strong focus on dividing cpu.shares by arbitrary
process properties.
fix u_flag_clear_*() bug introduced in b0e7b10
Merge branch 'master' into devel
fix u_flag_clear_*() bug introduced in a8ecfe that tried to fix b0e7b10
make sure that only one iterate() is scheduled

wrappers around g_timeout_add_*(..., iterate,...):

gboolean iteration_request_full(gint priority, guint milliseconds, gboolean force);
gboolean iteration_request_seconds_full(gint priority, guint seconds);

shortcuts:

gboolean iteration_request(guint milliseconds);
gboolean iteration_request_seconds(guint seconds);

Use these to request new iteration rather than calling
g_timoute_add_*() directly. Each request will replace the previous
one, unless the previous one was 'forced'.

If you request forced iteration, further request will be dropped until
the forced one is dispatched.

As a bonus:
- first iteration is not delayed
- iteration interval can be changed now (iteration_interval global
variable)
Merge branch 'master' into devel