Allow client-side processing with JSON

Allow the user to choose between server-side and client-side processing,
while still asking the data from the server in array or object format.
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.

Later on, this will help us with serializing the JSON more quickly.
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.
Add custom filters support

Also, provide a way to take a django-filter FilterSet as an argument and
use it to filter the data.
Add tests for noServerSide