Fixed problem with "tab+shift,tab" triggering on shift. 

Also only triggers callback once if matched.

* Treat everything as combo - this simplifies some code. ( I don't know the performance impacts)

* Fix regex to pass "+" as part of name for splitting later. ("tab+shift,tab" was firing on just "shift")

* Only trigger a single callback once if more than one combo for the same callback matches. It calls the callback with the first matching key combination... so "tab+shift,tab" will match tab+shift in preference. "tab,tab+shift" will only ever call with "tab". The body can then check for  the actual combination... key==="tab+shift" or key==="tab".