sum speed up using large reads

The sum program is two orders of magnitude slower than the
standard coreutils version.

jeri@hudson:~/linux-utils/coreutils$ time ./sum dat; time sum dat
51859  1024

real	0m0.150s
user	0m0.028s
sys	0m0.120s
51859  1024

real	0m0.003s
user	0m0.000s
sys	0m0.000s
jeri@hudson:~/linux-utils/coreutils$

Using Valgrind to profile the program it was determined that the
majority of the time was spent calling read().

(compile with -g option)
jeri@hudson:~/linux-utils/coreutils$ valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes ./sum dat
jeri@hudson:~/linux-utils/coreutils$ kcachegrind callgrind.out.<pid>

The code was modified to perform large reads (4096 bytes) and then
process all the bytes instead of reading and processing one byte at a time.
The speed up was dramatic.  With -O2 optimization this sum program
is slightly faster than the coreutils version.

jeri@hudson:~/linux-utils/coreutils$ time ./sum dat; time sum dat
51859  1024

real	0m0.002s
user	0m0.000s
sys	0m0.000s
51859  1024

real	0m0.003s
user	0m0.000s
sys	0m0.000s
jeri@hudson:~/linux-utils/coreutils$