Import pam.c from uxlaunch project

This code will be used for a new daemon that starts a logind session for
a user, added in forthcoming commits.
pam: add a header; remove undefined/unused functions
Add a program for launching user sessions

To integrate graphical user sessions with systemd > 204, there must be a
daemon running that opens a PAM session before the user session starts
up.

This daemon takes one argument of form SEAT-UID. It will start a logind
session for user with UID on SEAT.
build: compile and install the new service

This service can be enabled by running

  systemctl enable user-session-launch@seat0-1000.service

for example.
Update License header here.
Squash cast warning - pam wants (int) but gets a (size_t)
Update README
Removing user-session@.service, plus references.
Use setresuid to permanently drop root privs.
revving to v9 to test for release
launcher: set groups/GID before setting the UID

If setresuid(2) is called on its own, the process will still have group
"root", but it should be the group for the user with UID.

Also, setresgid(2) sets the supplementary groups for the process from
the "current set", which is root's set in this case, so change the
current set with initgroups(3) to use UID's supplementary groups.
Added Mate Desktop Environment
Add --enable-allunits option

Adds an option to bypass program detection and install all available
units using hardcoded paths. This is useful for packaging in binary-
based distributions where the user's installed programs are not known
at build-time.

edited: Merged to incorporate mate desktop session --Auke