su: Fix verification fails when the client isn't setuid

Don't take an uid-0 caller as a trust guarantee. Trust only values
that are delivered by a remote that's the same as ourselves (su-as-client
talking to su-as-daemon) and use PEERCRED to assert the remote UID and PID
on any other case.
This fixes credential validation when the client isn't always running with
root privileges via setuid

Change-Id: Iad8fc271d9c6aae7f6654af2ef9db638f2165af1
Fix security, tighter str comparison, fix warnings

 * When reading our and the caller's path, we were mistakingly reading only the
   first sizeof(char*) characters, so anything that was running from a path
   starting with '/sys' was being considered to be us
 * strcmp'ing strings instead of comparing only for the length of the first of
   them. Avoids possible executions from /system/xbin/suwhatever .
 * Fixed several compile-time warnings

Change-Id: I2af07f7bf5078acd0c36bd22b74fbc01276957be
Merge branch 'cm-12.0' of https://github.com/CyanogenMod/Superuser into cm-12.0