Squashed file permission fixes for "adb push"

adb: configure /system file permission with fs_config

adbd changes the permissions of files uploaded by copying
owner's permission to group and other. This causes kernel
load failure if any changes are made to kernel modules
followed by ``adb push'' or ``adb sync'' because file mode
644 would become 666.

The change uses fs_config to get the target mode of files.

In addition, the SELinux file label is set incorrectly
on synced files. Set the label properly.

Signed-off-by: Liang Cheng <licheng@nvidia.com>
Bug: 12264775

Fix "adb push /sdcard/filename"

Don't assume that calling chown(filename, getuid(), getgid())
will always succeed. In the case of /sdcard, a file you create
will be owned by root, so the chown call will fail.

Instead, use uid=gid=-1 so that the chown call is truly a no-op.

Ignore the results of calling chmod. Again, for /sdcard, the
chmod call will never succeed, because the file isn't owned by
the shell user.

Bug: 12441485
Change-Id: I43ad63b86ad62d58847718f5220204f3ec07392d
Add support for init mknod command.

This is required for statically allocated devices.
These don't hit ueventd and hence doesn't automatically get a device node.

Change-Id: I83d19f0666e1f1bbb369b226fba019994d403a89