Looks for all possible message fields on every MessageEvent.

As discussed in #53, the fields depend on message and not more
specifically on event type as I had been assuming. This prevents some
possibly crashes, such as when a message goes down to 0 stars
(triggering a MessageStared event but without a message_stars field).

resolves #53