Refactor makeRegExpSwitch interface to be object-based

* always expect regexps
* return the original matcher object on match, wrapped in a match object