extra/runner/report.py: extra-columns appear in a predictable order

Prior to this commit, the order that a user's `extra-columns` appeared
in the html report wasn't consistent (see below for why). This commit
changes this so they appear in the order they appear in the
`extra-columns` file. Although this order is perhaps slightly arbitary,
it is an improvement on having no order at all.

Python dictionaries don't have a consistent order (like a list) and so
when iterating over different instances of otherwise identical dictionaries
you aren't guarenteed to access the dictionaries' keys in the same order.
See [1].

This commit changes report.py's Run.extra_columns attribute to use an
`OrderedDict`, instead of a `defaultdict`, which guarantees the order of
iteration over a dictionary's contents will always be the order they are
instantiated. This caused a complication because `defaultdict` was using
lists as the default value to contain all the values, so the dict would
look like:
{
  "column1": ["value1", "value2", "value3", ...]
  "column2": ["value1", "value2", "value3", ...]
}

An `OrderedDict` won't let you do that so easily, so instead I took the
line-joining functionality in the html templates and put it into the
assignment of the column values. The new dict looks like:
{
  "column1": "value1\nvalue2\nvalue3\n..."
  "column2": "value1\nvalue2\nvalue3\n..."
}

Is use `textwrap.wrap` [2] to word-wrap lines to a maximum of 30 characters
which the same length as the failure-reason and notes are limited to.

[1] http://www.laurentluce.com/posts/python-dictionary-implementation/
[2] http://docs.python.org/2/library/textwrap.html#module-textwrap