More verbose template error reporting

Errors in the template parsing are presented differently:
 * KeyError's in commands are caught, and reported as such
 * In addition, the filename, line, problematic node and its arguments are
   reported.
 * The nodes are not shown recursively when casting as str since line and
   filename information is already supplied. This makes it easier to spot
   where things went wrong.
 * In the error view, the <pre> tag is added automatically for the
   'details' field.
 * HTML-escaping is performed for angular brackets ('<>') and ampersands are
   interpreted as such, and not as HTML (since we output for HTML).
Move decision to warn/fail to backend

The template is not the right place to decide to show a warning or
failure, leave it to the modules themselves. This will make it possible
to automatically set group (svn, git, email, trac) labels to warn if
only warnings were found and set it to fail if at least one failure
was found.

The new way of setting results is to also set a label next to the normal
variable. For example, 'trac_acl_hook' is set to True or False and if it
is False, 'trac_acl_hook_label' will be set to 'warn' (otherwise 'ok').

The decision to set it to 'warn' or 'fail' is done in the helper method
add_labels(). See doc string for more information.
Do not override pre-filled labels

In some cases, one might want to pre-fill the label (to warn or fail) if
add_labels() would choose the wrong one.
Improve warn/fail for trac diagnostics

Use dict so we can use symbolic names instead of indexes (more readable).
Also we pre-fill the label to warn if there are only non-fatal trac problems
and pre-fill it to fail if there is at least one fatal trac problem.
Diagnostics last step: fix special case

There was one variable was struggling with and I solved this now. All
choices (ok/fail/warn) are now made in the code and not in the template.
The template is now only for -how- to show it.