- 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