- fix: removed illegal double UI sort handler definition for $headers
- fix: removed illegal double UI sort handler definition for $headers

- improved the heuristic for getRowPosition(row) so it approaches O(1) for a range of variable rowHeight using grids

- made sure all getItemMetaData() calls fill in all function parameters (row, cell), so that anyone can be sure that `cell` is either a valid cell index number or the boolean `false` when the call is made without any knowledge about the to-be-addressed column in said row.

- inserted a few assert()ions to validate assumptions (TODO: create a filter which removes these calls -- and the implicit dependency on lib/assert.js -- for production files); I find that using this rather classic approach to testing/validating is a great boon next to (unit) testing as the assertions are 'live 24/7' during the entire development phase/cycle.

- getDataItemValueForColumn() now also receives row and column metadata so that metadata providers (via DataView or directly) can provide customized column data extractors on a per-row and per-column basis: this is very useful to construct customized 'grouping'-enabled DataView-based grid layouts.

GerHobbelt/SlickGrid,GerHobbelt/SlickGrid,GerHobbelt/SlickGrid