init.rc: Create /storage mountpoint so Dalvik can mark as slave in zygotes

Mount a tmpfs as /storage in order to create a mountpoint, so that Dalvik
can later mark /storage as slave in zygotes.

Must mount in early-init as some devices' init.hardware.rc populate
/storage then, which the tmpfs would overwrite if mounted later.

Must use tmpfs as rootfs can't be bind mounted (otherwise "mount rootfs
/storage /storage bind" would work as an alternative).
Set ANDROID_PROPERTY_WORKSPACE in exec.

Change-Id: Ib827bf14b4463ca6277b79256bcc4cd70f63fc31
Merge remote-tracking branch 'aokp/jb-mr1' into jb-mr1
init: Check for symlinks with lstat() not open()

Using open() with an O_NOFOLLOW flag will result in a file falsely
being determined to be a symlink if the open fails for another
reason.

For example, a character device that isn't ready due to the
underlying hardware not being initialized yet will fail to open()

An example of this are any CG2900 device files prior to
execution of ste-cg29xx_ctrl

This uses lstat() instead of open() with O_NOFOLLOW to check
whether a file is a symlink or not.

Change-Id: Ie0d8d94b426c84c29b1b04d41a4cc15536cb307c