summary.py: Treat subtests as groups

This patch causes tests with subtests to be treated as a group, rather
than as a test. This means that the status the test itself stores will
be overwritten by those in the subtest.

There is one oddity about this to be aware of; a test with subtests that
crashes or fails before any of the subtests run will report a fraction
of 0/1 with the appropriate color, even though all of the subtests will
report Not Run.

v2: - Add subtests to the results file as full tests (the internal view
      of the json), without this they will not appear in changes, fixes,
      etc
    - Render the background color of Not Run tests correctly in HTML
    - Apply subtest fractions down the stack

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
core.py: don't write subtests as full entries

This stops subtests from being written as full entries in the json.
Instead, in the summary code the test with subtests is treated as a
group, and the subtests as real tests. This has the added benefit of
reducing the size of the json by 80%.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>