Fix capture groups with '+'

    Because of the way we generated the group id when compiling,
    and the way it interacted with the duplication of the subnodes
    for '+', we generated two capture groups for. This is because

      '(a)+ became (a)(a)*.

    This change fixes it so that both capture groups, while generated
    the same way, get the same capture id.