Update bootloader to pass boot location on kernel command line

Our planned boot-location-agnostic software will need this information
from the bootloader in order to find /system and /data.  Older software
will just ignore the added argument on the command line.

Built from commit 54951a2 ("omap3621_evt1a: pass boot device information
on kernel command line") in the encore_cyanoboot tree:
https://github.com/NookieDevs/encore_cyanoboot/tree/54951a274d28f5d21f6fe9a951852264aab32172

Change-Id: I0e2b40808e366f3af553b92663bfe2051b7348a0
Power HAL: disable KSM scanning when screen is off

KSM scanning can keep the CPU busy during otherwise idle periods, which
hurts battery life.  Therefore, when KSM is in use, disable KSM scanning
before the screen turns off and reenable it when the screen turns back
on.

Change-Id: Id577977d0b6bc7c2456334726552a6723c83593f
Add utility to set up device symlinks based on the boot device

We'd eventually like to be able to install an identical software build
for encore to either eMMC or external SD card and be able to boot it
without any modifications.  In order to do that, we'll need to be able
to find the system and userdata partitions at runtime by taking into
account the install location.

Early userspace has no way of discovering the boot location on its own,
so we modify the bootloader to pass this information on the kernel
command line.  fsfinder (this utility) will then parse the command line
to find the boot location and set up device symlinks appropriately.

To be of any use, fsfinder has to run before /system is available, so
to avoid the need to ship a statically linked shell or other interpreter
in early userspace, the implementation is in C and compiles to a
statically linked binary.
Make the early boot process boot-location-agnostic

Instead of using fixed block device names for /system and /data, let
fsfinder set up links for us based on the boot location.  This allows us
to run unmodified from both eMMC and external SD card.
Make the recovery boot-location-agnostic

Instead of using fixed block device names for /system and /data, let
fsfinder set up links for us based on the boot location.  This allows us
to run unmodified from both eMMC and external SD card and to do the
right thing in both cases.
Add script to configure vold based on boot location

On SD card installs, the first partition of the SD card is the FAT
filesystem used as the boot partition.  This leads vold, which searches
the SD card for the first recognized partition when given a partition
number of "auto", to identify /boot as the /sdcard partition.

Fix this by running a script which detects SD card installs and modifies
/fstab.encore to instruct vold to use the last partition on the SD card
in that case.
Configure vold based on boot location in recovery too

To ensure that configure_vold.sh runs before vold starts, we need to use
an init.rc file (postrecoveryboot.sh is run when recovery starts, after
all the various services are started).

We also need to edit the configure_vold.sh script to change the
interpreter location for the recovery (/sbin/sh as opposed to
/system/bin/sh), so we need some build system hackery as well.
Recovery: move fsfinder startup into init.rc

While it doesn't seem to be strictly necessary for fsfinder to be
complete before the recovery starts, it shouldn't hurt either, and it
may prevent some potential problems in cases where recovery has been
instructed to do something when it starts (flash an OTA package, for
example).
configure_vold.sh: clean up identifying last partition on SD card