Dynamic table

This PR modifies the table processor so it can be set to dynamic.  This modification allows the table sub-report to be created dynamically depending on the columns in the particular request.

When the table is dynamic a jasper template must be defined, this template is used to obtain style and positioning information when constructing the table.

Here is an example configuration:

    - !prepareTable
      columns:
        icon: !urlImage
          urlExtractor: (.*)
      jasperTemplate: table.jrxml
      firstDetailStyle: column_style_1
      detailStyle: column_style_2
      lastDetailStyle: column_style_3
      firstHeaderStyle: header_style_1
      headerStyle: header_style_2
      lastHeaderStyle: header_style_3
      dynamic: true
      maxColumns: 3
      excludeColumns: ["exclude"]
      inputMapper: {table: table}


Additional features include an ability to set the maximum number of columns and exclude a set of columns.