Escape special characters outside matching groups

Applying the initial logic for escape regexp special characters outside of user-defined matching groups. It now correctly detects user matching groups and pushes empty keys onto the keys array. It is also possible to set the name of the keys as numerical indexes and set the optional flag, but I haven't worried about it in this PR (Is this a desired feature? It's pretty easy to implement).

As soon as we get all the open PRs together, I'll look at doing a refactor as I'm *trying* to avoid an awful conflict (which I haven't done a great job of yet).