Nested square brackets are parsed incorrectly

Another bug in the lax parser found while 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.
```diff
--- expected
+++ actual
@@ -1 +1 @@
-#<Liquid::VariableLookup:0xXXXXXX @name="hello", @lookups=[0], @command_flags=0>
+#<Liquid::VariableLookup:0xXXXXXX @name="hello", @lookups=["0"], @command_flags=0>
```