Don't use hardcoded atags size

* Why is this there? Why the hell is 1536 used as hardcoded size?
  The same goes for arch/arm/kernel/atags.c.
* The hardcoded size is too small for some devices, resulting in
  panic on boot and crash of kexec userspace binary.
Use dynamic tag list in atag_arm_load, fix buffer overflow in c6844e1dd
Use POSIX file operations to workaround kernel bug in atag_read_tags()

* Kernels older than 3.10 without fix would let fread only get first
  1024 bytes of /proc/atags, and half of it would be 0s. Using POSIX
  read instad of C's fread 'fixes' it.
* This behaviour can be seen also when using busybox - cat reads
  the whole file, because it uses open and read, but hexdump only shows
  the first 1024 bytes, because it uses fopen and fread.
Build in Android repository as static binaries
Add support for DTB on msm devices
Consider board_rev field of 'qcom,msm-id' when choosing best DTB match
Add support for dtb.img files (as opposed to dtb appended to zImage)