ueventd: Add bootdevice symlink

Create the /dev/block/bootdevice symlink to point to the
boot device information based on kernel command line.
This decouples references to the boot device from the
actual device nodes (e.g. eMMC, UFS).

Change-Id: If54b0b6ba6007742e9cb3d9d90cb3c86cd30b898
IMS-VT: Define IMS group.

Define IMS group.

CRs-Fixed: 615689

Conflicts:
	include/private/android_filesystem_config.h

Change-Id: Ie7fed3090a20db1e27a03d2d2cdde443d7ff5435
init: Allow platform devices directly under soc.0 *HACK*

Allow one level of platform device to be registered right
under the /sys/devices/soc.0 platform device.

Change-Id: I57c80c294a92f8b9ab91b3ee2f73bb156bb18945
init: Allow target-specific platform device base to be specified

Add optional build-time flag, TARGET_PLATFORM_DEVICE_BASE,
to specify the base sysfs path (without the /sys prefix)
where the platform device resides.  This provides support for
targets where platform devices are all under a master level
platform device (e.g. soc-bus).

Change-Id: I7b19b69f2c95335d6512e181f265b874e1713f64
init: Fix memory corruption when sanitizing platform paths

This commit fixes code that incorrectly increments s when it
hits the terminator character of the string being sanitized.
This means it will randomly start trashing memory beyond the
end of the string being sanitized until it happens to hit two
NULs (\0\0) which will break it out of the loop.

Change-Id: I76553d7f183236a78a0bc7b408e92559b98f732f
Merge remote-tracking branch 'cyanogen/cm-11.0' into cm-11.0