Implement kexec hardboot

"Allows hard booting (i.e., with a full hardware reboot) to a kernel
previously loaded in memory by kexec. This works around the problem of
soft-booted kernel hangs due to improper device shutdown and/or
reinitialization."
More info in /arch/arm/Kconfig.

 Original author: Mike Kasick <mike@kasick.org>

 Vojtech Bocek <vbocek@gmail.com>:
 I've ported it to mako and flo, it is based of my grouper port, which is
 based of Asus TF201 patche ported by Jens Andersen <jens.andersen@gmail.com>

 I've moved atags copying from guest to the host kernel, which means there
 is no need to patch the guest kernel, assuming the --mem-min in kexec call
 is within the first 256MB of System RAM, otherwise it will take a long time
 to load. I've also fixed /proc/atags entry, which would give the kexec-tools
 userspace binary only the first 1024 bytes of atags,
 see arch/arm/kernel/atags.c for more details.

 Other than that, memory-reservation code for the hardboot page and
 some assembler to do the watchdog reset on MSM chip are new for this device.

     ayysir <dresadd09691@gmail.com>:
     kexec: use mem_text_write_kernel_word to set reboot_code_buffer args
     in order to avoid protection faults (writes to read-only
     kernel memory) when CONFIG_STRICT_MEMORY_RWX is enabled.

     Signed-off-by: Vojtech Bocek <vbocek@gmail.com>

Patch from: https://gist.github.com/Tasssadar/6766757

Conflicts:
	arch/arm/boot/compressed/head.S

Backport patch for lollipop

Signed-off-by: Jean Francis Dominique S. Mabalot <jmabalot@google.com>
random: Entropy tweaks

Signed-off-by: Jean Francis Dominique S. Mabalot <jfdsmabalot@gmail.com>