Enable and fix kexec syscall support.

Use mem_text_write_kernel_word when assigning reboot_code_buffer parameters
to avoid protection faults (writes to read-only kernel memory) when
CONFIG_STRICT_MEMORY_RWX is enabled.
Enable caching and buffering for all of physical RAM in the decompressor.

Old method is to enable caching and buffering only for the 256 MB at the
start of the decompressor image.  This makes a hardboot-kexec'd kernel very
slow to decompress since the decompressor is located far above the kernel
destination.  This patch reduces boot time from 35 to 8 seconds on epicmtd.
Support copying of kernel tagged list (atags) in the decompressor.

This is needed to hardboot kexec a kernel with a new tags list (including a
new kernel command line), since the new atags would otherwise be lost with
the limited kernel memory mapping.  Without this patch, a hardboot-kexec'd
kernel uses the atags provided by the bootloader.
Support hard booting to a kexec kernel.

See KEXEC_HARDBOOT config option help for details.