srf.formats.datatables JavaScript Result Printer (using DataTables 1.9.4)

Implementing the DataTables plug-in [1] as a table-based JavaScript result
printer using the SMWAPI, aiming at large list displays with the need for
in-table content search, column filtering, and query alterations.

## Implementation
++ Uses the new smw.Api/query and smw.dataItem class

{public}
++ Add srf.formats.datatables constructor (init, parse, and update)
++ DataTables instance in controlled by srf.formats.datatables.init()
++ DataTables update in controlled by srf.formats.datatables.update()

{private}
++ UI components are controlled by _datatables.ui()
++ Result parsing is controlled by _datatables.parse.results()
++ Thumbail parsing is controlled by _datatables.parse.thumbnail()

## Features
++ In-table search
++ Table result pagination
++ In-page refresh
++ Query panel to enable dynamic column filtering of existing
printouts, alteration of conditions (only for logged-in users)
and limit parameter

## In-table thumbnail display
Is done via srf.datatables.afterImageInfoFetch to keep parsing
responsive. (requires Change Ia913c732)

@Design note
Image/thumbnail information is fetched from the MWAPI which means that
for the thumbnail info an ajax request in made to the back-end to fetch
the correct thumbnail url/size. Since the request is async it should
not block the regular parsing of the table content therefore a
'srf.datatables.afterImageInfoFetch' event is triggered which will update
each individual image table cell after it recieved the information
form the API. For the time where this information (thumbnail) is not
available a normal "File:IMG0027040123.jpg" link is displayed.

The user can enable local caching (using $.jStorage) to increase
responsivness and lower the amount fo ajax calls required.

## Template
Template parsing is not supported

## Event hooks
++ srf.datatables.afterImageInfoFetch
++ srf.datatables.afterUpdate

## User preferences
++ srf-prefs-datatables-options-cache-default
++ srf-prefs-datatables-options-update-default

## Qunit
++ Add ext.srf.widgets.optionslist.test.js
++ Add ext.srf.widgets.panel.test.js
++ Add ext.srf.widgets.parameters.test.js
++ Add ext.srf.formats.datatables.test.js

## Note
[1] http://datatables.net/
[2] http://www.semantic-mediawiki.org/wiki/File:Srf-format-datatables-smwapi-integration.png
[3] http://www.semantic-mediawiki.org/wiki/Help:Datatables_format

Change-Id: I1a8281f33c89d9870b739937ce361972b74097e5