Fix segfault on trying to free an invalid pointer in tokenizer.c
This fixes a segmentation fault on an out of memory error in `tokenizer.c` (encountered when loading large JSON files).

The gist of the error is that we're trying to `free()` a pointer that points to a read-only area of memory holding the error message string literal, as illustrated by the example below:

```c
#include<stdio.h>
#include<stdlib.h>


typedef struct Readonly {
    char *message;
} Readonly;


int main() {
    Readonly readonly;

    // This works
    readonly.message = (char*) malloc(200);
    sprintf(readonly.message, "This goes into normal memory\n");

    printf(readonly.message);

    // This fails as we try to free in a read-only memory region.
    readonly.message = "This goes into a read-only data section";

    // Segfault here
    free(readonly.message);
}
```

I will try to add tests that exercise this code path and verify that this solution is correct.

