ast: Remove unused ASTCLASS_FROGFILE
Add automated name conflict fixup for global identifiers

- Checks for duplicate identifiers or conflicts with FB keywords
- Typically C headers themselves won't have duplicates, but they
  often have names that only differ in upper/lower case, so they
  become duplicates in FB due to FB's case insensitivity.
- Types and variables/procedures are treated as being separate
  namespaces
- #defines are checked against everything
- fields/parameters aren't handled yet
- Conflicting symbols are automatically renamed
- With preference to renaming enum constants/#defines instead of
  variables/procedures
- Renamed EXTERN variables or procedures are emitted with the
  proper ALIAS "<original-id>"
ast: Fix debug name for ASTCLASS_NOEXPAND
Remove support for downloading/extracting tarballs etc.
Remove *.fbfrog preset files, use command line only

- *.fbfrog commands turned into command line options
- several old command line options removed in favour of a
  prettier new ones, e.g. -d A=B and -DA=B are now removed,
  instead there's just -define A B.

- command line arguments are loaded into the tk buffer,
- using a tiny lexer that's also used for reading @files.
- trying to share code with the C lexer where possible
- preserves token locations for error reporting
- all arguments from argv are put into a string separated with spaces
  and properly escaped if needed to match @file syntax rules
- this allows them to be added to the tk buffer with nice location
  information too (i.e. column+offset)
- command line parsing now parses through the tk buffer which contains
  TK_ID for -options and TK_STRING for any other arguments not starting
  with a '-'.
- Error reporting can nicely show the whole command line and underline the
  errornous part with an ^~~~~ indicator thanks to the location info.
- Care is taken to pass the location info on to the preset AST, so it
  will even be used in "file not found" messages later when the CPP tries
  to start parsing, to indicate where this file was specified.
- This seems to be good because the CLI will be important for fbfrog, and
  especially with bigger @files the error reporting must be good or else
  it will be frustrating.

- New file loading mechanism: FILEBUFFERs, also readded generic linked list
  (TLIST) for this
- Can be created from file by filename, or zstrings (i.e. command line)
- are globally cached, so that the file content is available forever for
  error reporting (and in the future, also for emitting messages with
  source context into the output .bi files).
- TKLOCATIONs now use FILEBUFFERs instead of filenames
- Also simplifies code in lexer and error reporting

- Whole FROGPRESET stuff removed, all options are now simply stored in the
  global FROGSTUFF context
- Adjusted fbfrog console output slightly to show separate versions more
  clearly
- frogWorkPreset() got inlined as part of the main() part since there's
  just one preset now
- Overall the new code could use some further cleanup
- Since there is no more *.fbfrog file name, the default version #define
  name can't be based on it anymore. So it's now just __VERSION__.
- CLI no longer accepts/searches for *.fbfrog files, so also running the
  tests by just passing "tests/" to fbfrog no longer works. Instead there's
  now a little helper program at tests/run.bas that runs all the tests.