Tables functionality

This merge adds a table display option in addition to the existing time series option. It also adds a download CSV feature. There are three known issues:

 * Sorting fails when column name other than @time is not variable-like (contains spaces, symbols, etc)
 * Doesn't handle multiple series
 * Query must be rerun for each display type

These will be fixed by standardizing a new format for query results to be returned in.