Refactor formtool grid configs

This PR will be used to refactor form tools, in relation to grid configuration. Updates to include:

- [x] making cell renderers asynchronous
- [ ] adding paging
- [x] virtual columns
- [x] default title column to use the `overviewLink` renderer
- [x] add row numbering
- [x] add row checkboxes (for group actions)
- [x] dataset filtering (MMS-71)

This initial commit provides asynchronous cell renderers, and removes logic from the view, adding it to the modelIndex middleware instead (updating record field values, with their cell-rendered counterparts).

### Virtual columns

This will allow a column to be produced, that isn't based on a model's field. A renderer for a column virtual must be supplied, and virtual columns would also need to be identified.

```js
grid: {
	columns: {
		title: {
			label: 'Label',
			renderer: linz.formtools.cellRenderers.overviewLink
		},
		alias: 'Alias',
		dateModified: 'Modified',
		count: {
			label: 'View count',
			renderer: rendererFunctionName,
			virtual: true
		}
	}
}
```

A virtual column renderer will need a signature matching:

```js
rendererFn(record, model)
```