revamp the data model, replacing Report with Analysis and Issue

Previously the data model was of individual Report instances, describing
specific issues found in code.

Revamp the data model, splitting Report into an Analysis class (describing
an invocation of an analysis tool on a source file) containing zero or more
instances of a new Issue class (describing a particular issue found).

This allows us to model that a tool was run and found no issues, as compared
to the case where a tool was not run.

The Report splits into Analysis and Issue.  (I considered using "Warning"
rather than "Issue", but "Warning" is a Python builtin).

Analysis keeps the Metadata instance; everything else goes into the Issue
instances.

The "internalid" part of the Generator becomes "testid" and goes into the
Issue instance.

Analysis gains an optional file_ attribute and an optional stats (instance
of a new Stats class)