framework/summary.py: Adds new summary class and two support classes

This new summary class (currently NewSummary), is a complete redesign of
the summary generation system. Much of the code in summary was not
commented, and also not clear as to what it was doing, making it very
difficult to maintain and even more difficult to improve. The other
problem with the code was architecturally it was clobbered together,
doing some of the work in the summary.py file, and some of the work in
the piglit-summary-html.py file.

The new summary class does all of it's work in the summary.py file, and
from an API point of view, in one class. The summary class uses it's
constructor to build lists of passes, failures, skips, problems, etc.
and then uses methods to generate output. The reference implementation
of that kind of method is for generating HTML, but in theory it could be
used to generate anything: XML, CSV lists, printed lists ala
piglit-summary, etc.

Also updates the .gitignore file to ignore some generated content
created by this class.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
templates: adds mako templates for new summary code

Adds the actual templates used to by the new mako based summary code.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
piglit-summary-py: Use the new summary class to generate HTML

Drops almost all of the code used in this file, all of that
functionality is now handled in the summary class. Instead, the majority
of this file is just the argparse instance, and a few short lines
calling the new summary class.

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

These template files are no longer used, and so they should be removed

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
summary: Build subdirectories for subtest result pages

With 10,000+ tests all living in the same folder it can be hard to
identify a single file, especially when trying to work with the HTML
generation itself. This patch changes the behavior so that each test
has a directory tree for the group results with tests under it (ie
spec/GLSL 1.0/foo/bar/test.html)

A side effect of this is that the group names of tests don't have to be
altered to create a valid name (since the slashes in the group names
just become the slashes in the folder structure) and this was the single
most expensive operation of HTML generation (about 1/3 of the total
time). This is a tidy little speedup.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
test_result.mako: Drop redundant status and result field

In the old summary code one was set equal to the other, and then
written. In order to produce the same output they were both brought over
to the mako code. But they're rather silly and worthless and only one
should be kept.

Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
Summary.py: Start the process of doing the piglit-summary via newsummary

This is the start of the work to replace the code in piglit summary with
code using new summary.
Summary.py: Convert self.tests into default dict

This is actually a really good use of lambda, and allows us to drop a
lot of try except blocks
summary.py: count the total number of tests passed, failed, etc

This is Useful for generating text files, but it generally seems like a
useful bit of information to have, for summaries.
summary.py: Add generateText() method to NewSummary.py

This will be used to replace the existing piglit-summary.py code, and
convert it to use the new summary backend.
piglit-summary.py: convert from getopt to argparse

argparse requires less code, and is much easier to read and maintain.
piglit-summary.py: Convert to using new summary for generation

This changes the output to actually use the NewSummary class.