Shift + Click range selection improvements

IMPORTANT: Based on the code in the pull request #435.

Changes:

-> Now able to select/deselect ranges
-> The range is based on the previously active checkbox. (i.e: the user clicks a checkbox no 1 then checkbox no 5. The interval will be [1,5].)
-> The range new state (selected or deselected) depends on the last option clicked new value. Example: If the checkbox is Shift-clicked and becomes selected, the whole range will be too.
-> Improved the range select speed tremendously by only notifying the select for the "change" event once the whole range finished changing and manually doing the selection or deselection.