Nested square brackets are parsed incorrectly

Another bug in the lax parser found when asserting correctness of Liquid-C.

The cause is that the definition of the `VariableParser` regex will match `a[b[c[d]]]` as `a[b[c[d]`, thinking the closing bracket for the innermost nesting is actually closing the first bracket. This makes the rest of the `VariableLookup` code throw up and produce an incorrect result.