report: Move toward a more data-oriented design

This will make it easier to change to a database backed data-store from
the current directory-backed one, but the reason I'm doing it now is to
make it easier to customise the extra-columns, as will be necessary to add
invisible extra columns which are search-able, but not visible.  This will
be useful so we can search by full git SHA, but only display the git
version description.
stbt batch report: Generate what data we can at `run-time`

The intention is that in the future the `data` member of `Run` will be
stored in a database.  The intention is that the database stores *facts*
and we wish to perform interpretation on these facts at run-time where
possible.  In this case we move the interpretation of what to do with each
of the files until template rendering time.
report: More data-oriented refactoring
report: Refactor: Declare columns in the code rather than in the template

This gives us more flexibility to customise the columns in the report
as is required to do custom formatting on extra-columns.
WIP: report: Allow customising the columns