Pull: print some data instead of newlines when output is not a terminal

This improves `docker pull` output when stdout is not a terminal which should fix #8140.
~~I had to change some logic for displaying json message output to fix some differences between handling terminal/non-terminal output, so some more testing should be best.~~

The pull output when running in cli should be the same, while new output when stdout is not a terminal looks like:
```
root@ff5a78202988:/go/src/github.com/docker/docker: ./bundles/1.2.0-dev/binary/docker pull busybox > test.txt
root@ff5a78202988:/go/src/github.com/docker/docker: cat test.txt
Pulling repository busybox
a9eb17255234: Pulling image (latest) from busybox
a9eb17255234: Pulling image (latest) from busybox, endpoint: https://registry-1.docker.io/v1/
a9eb17255234: Pulling dependent layers
511136ea3c5a: Download complete
42eed7f1bf2a: Download complete
120e218dd395: Download complete
a9eb17255234: Download complete
a9eb17255234: Download complete
```
ah yes, it's a bit complicated. The problem is that in the current state, `jm.Progress` will never be nil because in https://github.com/docker/docker/blob/1ae37cef9189976c7d3838ba0899e874a0758379/utils/streamformatter.go#L60, we set it to an empty struct. That's the reason we do not print anything in non-terminal because it eats non-progress data too.

So for this, the simplest fix is just to check if it actually doesnt contain any progress string. I had a more complex fix which actually send `jm.Progress == nil` ( https://github.com/dqminh/docker/commit/e8b09cfe0ce44cff3be60febdec88bc27137a990 ), but doing that also breaks something else since the display code is quite complex (https://github.com/docker/docker/pull/8150#issuecomment-56563160), so i just reverted back to the simpler fix.