Improved handing of data tag strings

Now can handle `:`, `[`, `]` in quoted strings. Cannot handle `]` in unquoted strings - this differs slightly from vanilla which can handle it as long as it has a matching `[` before it.