- added an image to show the sort column in 'undetermined / unsorted' state so that it is visually recognizable as sortable (current CSS style did not show this)

- regenerated the sort images from Photoshop template (template included): using PNGs but using the blue color of the (old) GIFs
- headermenu fix: when right-clicking do not show the default browser popup IFF any event handler has been registered, i.e. only prevent the default popup when some user code has been provided as an event handler instead. For this the Slick.Event class interface has been extended with the `.handlers()` method wich produces a (possibly empty) array of registered event handlers.

- pager: set the 'auto' page size to the number of **completely** visible rows: when the grid viewport size spans N rows 'and a little bit', then don't count that 'little bit' as an entire row for paging purposes as it would require the user to scroll in every page while the purpose of 'auto paging' is that no manual scrolling would be necessary anymore as all rows would be visible by paging up & down. For this purpose the internal function `getRowFromPosition()` has been renamed to `getRowWithFractionFromPosition()` and has been augmented to deliver the within-row pixel position (as a ratio of the row height) next to the row index number itself.

- applyColumnHeaderWidths() does not call updateColumnCaches() implicitly anymore: for easier code review this call has been explicitly placed at the few spots where applyColumnHeaderWidths() is used: the column cache can be used to speed up several more column offset calculations in the code (see the next~future commits)

- the getViewport() API (~ getVisibleRange()) has been augmented to also deliver these extra fields:
  + `.bottomVisible`: the last visible row; `.bottom` always points as the first **IN**visible row, i.e. points one *past* the bottom of the viewport
  + `.bottomVisibleFraction`: the within-the-row position of the bottom edge, i.e. the amount of the row area which is still visible. This is a ratio based on the row height.
  + `.topInvisibleFraction`: the within-the-row position of the top edge, i.e. the amount of the row area which is **IN**visible. This is a ratio based on the row height.
  You can see their use in the pager's pagesize calculation as a user can switch to 'auto' mode while both bottom and top row in the viewport are currently partly obscured -- we want a correct page height calculated anyhow.
minimal formatting cleanup - whitespace police
- fix off-by-one bug in auto page size calculation

- removed duplicate output in pager info display
added the assert.js required to run slickgrid as it now contains internal assertion tests -- TODO: use a grunt task to remove these from the sources for production output library code

also added a jQuery.browser backwards compatibility addon as jQuery 1.9+ does not support $.browser any longer while some of our code still uses it (and replacing that by other solutions is deemed too much work for little result right now)
introduced the internal getColumnOffset() function to hide the code complexity where we now rigorously employ the column cache to deliver cell pixel offset values, replacing the loops in several places by a single lookup.

Also simplified the column cache into using a single columnPosLeft[] array storing both right/left edges (as they are the same) thus cutting down on the cache prepwork for each update. cache array columnPosRight[] is now obsolete and removed from the code.

Simplified the colspan using code as many conditional calculations were performed where a simple straight single calculation is perfectly equivalent.
bit of formatting - whitespace police
- added DataView options.stableSortIdProperty option in conjunction with **stable sort** support for the DataView via mapping, which is based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort. Either a user provides his own stable sort mapper/unmapper helpers (see Example 4A source code) or a default stable sort mapper is applied instead.

- fixed the disappearance of the sort-asc/desc icons in the header when the header is too narrow: now the icons are `position:absolute` positioned and the header name styling is adjusted accordingly to ensure both are always shown in the header, even when it is very narrow.

- cleanup: removed unused function percentCompleteSort() from the examples
updated all examples and tests to include assert.js (required by slickgrid now)
Merge branch 'ojotoxy-master' into k0stya-rowspan

Conflicts:
	controls/slick.pager.js
	examples/example-ajax-pager-fullscreen.html
	examples/example4-model.html
	slick.grid.js
	tests/dataview/index.html
	tests/scrolling.benchmarks.html
fix crashes due to latest merge: getRowFromPosition --> getRowWithFractionFromPosition