Turn -noconstants into -constants, default to off

#defines are generally preferable because
* they work with # and ## preprocessor operators, constants don't
* they work with #if (older versions of FB didn't recognize constants in
  #if)
* there's no real disadvantage compared to "true" constants
cli: Detect unknown options in the lexer, instead of producing TK_STRING

Otherwise the TK_STRING could be misinterpreted as "valid" args to
options like -declaredefines, because they have their own loop to go
through arguments which did not check for unknown options.
Fix TODO count to include unknown constructs nested in structs etc.
Don't add extra typedef for declaring forward references