Support subexpressions in compound matcher.

Currently, given an expression like:

    G@roles:production and G@roles:frontend or G@roles:db

There's no way to express the desired logic `G@roles:production and (G@roles:frontend or G@roles:db)`. This change adds support for subexpressions.

Unfortunately this is untested (I verified the regex works though) as I don't currently have time. I thought I'd throw it over the fence anyway.