entry: break out time, level and message from data

Replaces #33 and fixes #44.

Please review @aybatme
My idea was to prefix _all_ user provided fields for consistency, but if you prefer this way, that's fine too.