Major re-working in light of some new log files.

It turns out the prefix on each line identifies a thread and the
output switches between different threads.  Each thread's part of the
story can be parsed the same way I was parsing a whole file, so I've
turned the parser inside-out, using generators as consumers, so that
each thread's part can be parsed by a separate consumer and I can
collect up all the results at the end.

There were a few other things the new files introduced me to, like
Thread lines, termination reports, bad free()s, access to memory that
isn't mapped and Address blocks with no stack (for memory not from
malloc of free).  Those were comparatively easy to handle.  When
iterating, deal with the fatal issues first (which might lead to
repeating them, but only if the user hasn't resolved them).
Have issues remember their victims.

An issue with an Address component tells that address.usedby(self); this now
also records the address in self.victims, another set.  TODO'd some sets that
I'd rather make use weak references.
Base Stack on a Tuple variant and use it for Frame.callers()