ProgressStream and LogReader now read entire input stream

When processing a json stream, Jersey will not release the connection until
the entire input stream is read. This is a problem for our ProgressHandler
classes because if they receive an error from docker, they throw an exception
and stop reading. This causes Jersey to never release the connection, so you
will exhaust the connection pool if you encounter enough errors.

We had been calling close on the input stream, but this doesn't release the
connection because the stream we get from Jersey is of type UnCloseableInputStream,
where close is a no-op. So we now read the entire object instead.
It's not good to depend on finalizers because you don't know when they'll actually get called. In this case callers should always call `close` when done with the object...we doing it from finalize also just as an extra precaution to lessen the damage in case the caller forgot to.

Arguably it's better to not be forgiving, and let the users deal with the consequences of not calling close. But ProgressStream was already doing this, so I just added it here to be consistent.