index: attempt to handle nested groups

Also now the `namedCaptures` array will have sparce entries
in the Array for entires that are normal capture groups, but
not named capture groups. This way, the user just has to
do `i + 1` on matches in order to set the keys on the match.

So you can do something like:

``` js
var keys = [];
var re = PCRE("%^https?:\/\/twitter\\.com((\/\\#\\!))?\/((?P<username>[a-zA-Z0-9_]{1,20}))\\\/status(es)?\/(?P<id>\\d+)\/?$%ig", keys);

var match = re.exec('https://twitter.com/justinabrahms/status/486924059264163840');
for (var i = 0; i < keys.length; i++) {
  if ('string' == typeof keys[i]) {
    match[keys[i]] = match[i + 1];
  }
}

console.log(match.username);
console.log(match.id);
```
test: fix twitter test case