Allow whitespace in square brackets

The definition of `QuotedFragment` causes variables like `hello[goodbye ]` (notice the space) to get parsed in the same way as `hello.goodbye`. This is due to the name being parsed as `hello[goodbye` (with no closing `]`) and then `VariableLookup` interpreting that in a lax way.

I'm not really sure how to fix this in a clean way.

I also noticed that sometimes my broken tests were passing due to strict mode being turned on and leaked by a test, which is fixed in this PR.
No, this is just fixing `==` so that the test actually fails. I don't have a fix.