Define types for log events, log-event streams, and log trees.
Implement parsing from log streams to log forests.

Ran into some weird GHC behavior whereby it seems that

  t1 ~ t2

is not enough for GHC to conclude

  F t1 ~ F t2

for 'F' a type function associated with a type class.
Add stream parsing test.

I got a little carried away failing to implement constraint
implication ...
Reimplement 'eof' and 'anyToken' from Parsec to avoid 'Show' constraint.

I guess the constraint must be in there to provide better error
messages, but in my case it's unfortunate, since I don't know how to
write general 'Show' instance for 'LogEvent'.

On the other hand, it's easy to implement specific 'Show'
instances. For instance, in 'Test' I now derive an instance for the
case where all labels, calls, and args are strings.  This improves the
output of 'Test.main'.