Add --json flag

Allows input to be pre-structured as JSON. Applications that can output JSON
natively can forgoe the complexity and overhead of grokking with regexps.

This is an extension to `io.messages` with some basic validation. Each event
has to be on a single line, otherwise it's not possible to determine where a
stream ends.
Don't overwrite @fields

If an event already contains `@fields` then we shouldn't throw these away.
Merge them together. CLI supplied fields still take precedence.
Don't overwrite @timestamp

Applications that create their own JSON structured events will already
include a timestamp field. This reflects the time that the event happened,
which is more important than the time logship consumes it.

It does not however perform any normalisation. Which may be an issue,
because not many things than generate ISO8601 timestamps with u-second
precision.
Refactor messages/json_messages out of io

Move these two non-io related methods to __init__. Since they aren't
strictly related to the handling of io, like `io.lines` is. They can be
moved to a more specific module later - which will probably look more like a
"chain".
Make `messages` take iterables, not file handles