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 (which `collections.defaultdict inherits from), 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.

[1] http://www.laurentluce.com/posts/python-dictionary-implementation/