Escape HTML output when generating test result pages.

If a test generates output containing '<', '>', or '&', we need to
HTML escape it so that the web browser doesn't interpret it as
containing HTML tags.

While we're at it, go ahead and HTML escape the traceback and dmesg
outputs too.

Reviewed-by: Dylan Baker <baker.dylan.c@gmail.com>
summary.py: Fix empty generation of problems, changes, etc

The list comprehension can be further refined to be fixed, but the
resulting code is much more difficult to read than the try/except
statement.

This reverts commit aaae592490a6459aba52bc306b819a7fcbaa3008.
This reverts commit 450935b06f8508d3f4177fe7336e3bdee3973a9e.

CC: Paul Berry <stereotype441@gmail.com>
Signed-off-by: Dylan Baker <baker.dylan.c@gmail.com>
gs: Test that gl_MaxGeometryInputComponents can actually be achieved.
gs: Fix geometry layout case insensitivity tests.

These tests use check_link: true, which means that they each need to
specify a complete set of geometry shader layout qualifiers in order
to pass.
gs: Test redeclaring either gl_PerVertex in or out, and using both.
Test a corner case involving arrays, structs, and interface blocks.

This patch exercises the same corner case as
https://bugs.freedesktop.org/show_bug.cgi?id=70368.
!UPSTREAM: Interface Blocks: Test how interface block members are accessed from API

v2: Add checks to also test invalid names

v3 (Paul Berry <stereotype441@gmail.com>): use piglit_link_check_status_quiet()

TODO:
- Let Nick push this.