MFC: Merge in the changes in -current:

Support ! operator in "files" files.
Improve error detection and reporting
Cleanup code to make it easier to maintain.
Remove mandatory keyword: it has been used for 17 years.
Bump version number (we should have bumped for -I too, but didn't)

	r261501 | imp | 2014-02-04 17:26:11 -0700 (Tue, 04 Feb 2014) | 5 lines
	Fix ! by not clearing not at the bottom of the loop.
	Add a blank line
	Submitted by:   bde (blank line)

	r261493 | imp | 2014-02-04 11:28:58 -0700 (Tue, 04 Feb 2014) | 5 lines
	Implement the '!' operator for files* files. It means 'include this
	only if the specified option is NOT specified.' Bump version because
	old config won't be able to cope with files* files that have this
	construct in them.

	r261446 | imp | 2014-02-03 12:14:36 -0700 (Mon, 03 Feb 2014) | 5 lines
	Convert the loop by gotos into a for loop to improve readability. I
	did this only with the inner loop for the token parsing, and not the
	outer loop which was understandable enough when the extra layers of
	looping went away...

	r261445 | imp | 2014-02-03 12:10:33 -0700 (Mon, 03 Feb 2014) | 4 lines
	Fix a bug introduced in r261437 that failed to honor "optional
	profiling-routine" to work, since profiling-routine is not really an
	option or a device, but a special case elsewhere in the code.

	r261444 | imp | 2014-02-03 11:56:41 -0700 (Mon, 03 Feb 2014) | 2 lines
	Slight cleanup to the error messaging to compress code vertically...

	r261442 | imp | 2014-02-03 11:31:51 -0700 (Mon, 03 Feb 2014) | 2 lines
	Better error messages when EOF is hit in the middle of a phrase.

	r261438 | imp | 2014-02-03 09:54:53 -0700 (Mon, 03 Feb 2014) | 5 lines
	Move the check for standard keyword + optional inclusion specifier to
	its proper location. Otherwise you could have 'file.c standard pci'
	without an error. This construct isn't in our tree, and has no well
	defined meaning.

	r261437 | imp | 2014-02-03 09:47:10 -0700 (Mon, 03 Feb 2014) | 4 lines
	Don't believe we have a requirement until after we've checked all the
	known key words. This will make error messages slightly better in
	weird corner cases, but should otherwise be a nop.

	r261436 | imp | 2014-02-03 09:46:01 -0700 (Mon, 03 Feb 2014) | 3 lines
	In the 17 years since r30796, the mandatory keyword has never been used
	in any files as far as I can tell, and is currently unused. Retire it.

	r261435 | imp | 2014-02-03 08:10:44 -0700 (Mon, 03 Feb 2014) | 6 lines
	Slightly deobfuscate read_file() and likely pessimize the runtime
	performance by epsilon.
	(Translation: elminate bogus macros that hid 'returns' making it hard
	 to read and moved a block of code inline rather than at the end of the
	 fuction where it was effectively a 'gosub' kind of goto).