Address `cat` performance and buffering issues

I've been playing with https://github.com/uutils/coreutils/issues/8

With buffering changes I've made the time of `cat` is not close to the native one and the time of `cat -n` is 40% better, but still way, way slower then native one.

PR contains some pure stylistic / vim comments patches too.