Allow user to get extra data for each table row

The user can set a "get_extra_data_row" method, in order to
collect extra data for each table row.
Use values/values_list depending on field type

Instead of using always values(**...), we should use values_list, if the
user has asked for an array-based JSON.
Allow user to format aaData before rendering it

Add `format_data_rows` method that checks if the user has set a
`format_data_row` method and maps it to each element of the aaData list.

Also, optimize row formatting, meaning that instead of always executing
a reqex for every field of every row, run it only when we're sure that
we have a formatted field.
Add custom filters support

The user can trigger his/her custom filters by sending a "sSearch_*"
argument in the Datatables request.

The user can add his/her own filters in the `filters` field of the
DatatablesView class or define one or more `filter_*` methods in this
class.  The latter way is similar to the custom sorting approach.

The former way is a bit more flexible and can integrate with the popular
django-filter plugin. More specifically, filters added in the `filters`
field must have one of the following formats:

* List format: [filter1, filter2, filter3]
  Note that this format requires that the filters have a `name`
  attribute and a `filter` method.
* Dict format: {'name1': filter1, 'name2': filter2, 'name3': filter3}
  Note that this format requires that the filters have a `filter`
  method.
* Django-filter FilterSet format: Simply a FilterSet class

In order to trigger a filter, its name must match the asterisk part of a
Datatables "sSearch_*" argument. The value of this argument will be
considered as the query for this filter.

Also, note that all list/dict filters should take as an argument a query
and a queryset and return a filtered queryset.
Add tests for client-side JSON
Add tests for extra data
Add test for aaData row formatting
Add tests for custom filters