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.