Changed tabIndex code to use the element cache
Implemented focus event handling and made fixes on fireEventIfExists

Some juggling with the event handlers was needed to avoid calling them
unnecessarily when focus goes from wrapper to filter field.

fireEventIfExists was triggering events twice. Looks like an else was
missing. Changed from trigger to triggerHandler because "trigger"ing focus
on the select makes the wrapper lose focus and breaks keyboard usability.