fully fledged selection capabilities

This is a mixin for a component which provides complete functionality for the selection behavior:

* Support of `ctrl` and `cmd` key multiple selection
* Support of `shift` key
* Support of `ctrl+a` / `cmd+a` combination to select all records
* Support of arrows `up` and `down` to switch selection from the keyboard
* ContextMenu event handling and selection:
    1. If click is on the row that is not selected, the clicked row becomes the selection
    2. If click is on the row that currently is in the list of selection, selection does not change

The component also accepts action `contextMenuHandler` which will be invoked when contextMenu event occurs, e.g.

    {{table component contextMenuHandler="MyHostedControllerHandler"}}