[app][aboot] add 2ndstage boot support

on 2ndstage boot we don't want to write deviceinfo because this is
used on secure devices only which have a signed aboot partition.
Writing info to this partition would softbrick the device.
[target][msm*] add 2ndstage display driver

When booted via 2ndstage the display has been initialized already.
This means that we can directly use the framebuffer

Conflicts:
	target/apq8084/rules.mk
	target/msm7627a/rules.mk
	target/msm8226/rules.mk
	target/msm8610/rules.mk
	target/msm8916/rules.mk
	target/msm8960/rules.mk
	target/msm8974/rules.mk
[target][msm8610] add key implementation for the uboot API

Conflicts:
	target/msm8610/init.c
[project][msm8610] disable UART
this breaks display on MotoE

Conflicts:
	project/msm8610.mk
[platform][msm_shared][display_2ndstage] cleanup includes
[platform][msm_shared][display_2ndstage] add support for sideloading LK on aries

Conflicts:
	platform/msm_shared/rules.mk
[app][aboot] allow using custom partition name for splash image

Conflicts:
	app/aboot/aboot.c
	app/aboot/rules.mk
[app][aboot] add xiaomi dualboot support
[app][aboot] enable devinfo for 2ndboot devices with emmc

but use the boot partition to not brick the device
[app][fastboot] add 'oem screenshot' command
[platform][msm_shared] replace spin with udelay and mdelay

spin is too slow for short delays. also it's not ready at early init
and in critical sections.

Also revert timer code back to caf with the small addition of adding
enter/exit critical section lines to mdelay and udelay to prevent
multiple use of the counter.
[include][dev][udc] fix compile
[target][msm*] add support for building emmc_appsboot.mbn
[app][aboot] fix flashing partition images
[app][aboot] define BOOT_2NDSTAGE if 2ndstage boot is enabled

Conflicts:
	app/aboot/rules.mk
[project][msm8960] disable shell and enable logbuf