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 M7, it is based of my flo port, which is based of
  my grouper port, which is based of Asus TF201 patches 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.

  M7 also needed bigger BOOT_PARAMS_SIZE, because it has more atags.
  Modified kexec-tools binary is required. See:
  https://lkml.org/lkml/2013/9/27/517
  https://github.com/Tasssadar/kexec-tools/commit/c6844e1ddb13a6b60cfefcb01c3843da97d6174c
  https://github.com/Tasssadar/kexec-tools/commit/210c3b8a4aab69778d93d08b7ff2bfd9c1146cef

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

Willi Ye <williye97@gmail.com>:
  Ported kexec hardboot for melius based of Tassadar's m7 port.
  Some things are pulled from oblikas' jf port.

Signed-off-by: Willi Ye <williye97@gmail.com>