Added static token generators

These are token generators whose tokens are a constant string,
i.e. keywords, operators, etc.
Began to use logger, leading to major fixes

Most importantly, the log cache hash table was comparing the pointer
values of the strings being used as the key,
not the strings themselves.
Switched to std::string to avoid such issues
Used logging to fix StaticTokenGenerator