Use UNIX timestamps in download log messages.

It's easier to generate these across multiple environments than it is to
match os.date('%c').
Send stdout to the item's Redis log.
Adjust log analysis for download and stdout messages.

Specifically, we now:

1. broadcast one message per WebSocket write
2. invert where the job data is: instead of shoving messages into the
   job data, we now store the job data in a job_data key inside each
   message

Rationale for #2: I was getting confused by the multiple "message"
classes and how they wrapped messages coming from the download pipeline.
This, to me, is clearer.
Teach the dashboard about the new message format.
Don't calculate response distribution if we haven't seen any responses.

This avoids silly divide-by-zero errors.
Use ResponseDistributionView instead of ProportionView.

I found it confusing to have two similar but fairly different views in
the same application.
Bump pipeline version.