(PUP-1027) Add warnings for bare words that will be keywords in 4.0

This adds a check for reserved words and makes the words:
private, function, type, and attr reserved.

These warnings are for the --parser current setting in 3x.
(PUP-1027) Change warning for reserved words to a deprecation warning
(PUP-1027) Make it an error to use reserved words in future parser.

This makes it an error to use the reserved words function, private,
attr, and type in the future parser. The same keywords issue warnings
in 3x that they must be quoted. Therefore, the 4x implementation should
make it an error to use them (until there is support for the features
they will represent). If these are not made in to errors the features
can not be introduced without breakage since a deprecation can only be
turned into an error (or something new) in a major release.
(PUP-1027) Improve warning message for reserved words

The original warning about reserved words implied that a user could
always quote the word to be able to use this. Although this is often the
case there are also places where the word is used as a NAME (such as
class function {}) where quoting is not an option. In those cases they
need to select a different name.
(maint) Fix latent error in parser face

There was an error when the spec/unit/util/rdoc_spec.rb tests were run
before the spec/unit/face/parser_spec.rb tests. In that order the test
for the "parser validate" action would fail when it is supposed to read
text from stdin.

What occured was that the environment from the previous test had created
a @known_resource_types on the current_environment. When the face ran it
didn't make sure that the environment was reset before trying to
validate the code it was given. The validation is done in a very
round-about manner where simply asking the environment for the
known_resource_types is expected to result in perform_initial_import,
which will raise and error if there are syntax errors in the manifest.
However, since the environment already had a @known_resource_types
value, it skipped perform_initial_import and didn't fail as the test
expected.

The fix is to ensure that the environment will reparse the manifests if
needed, which required a small adjustment to the reparse logic on the
environment, since the watching? flag should only control file watching,
not changes to the code setting. The other part is to have the validate
face check that it needs to reparse before assuming that
known_resource_types will automatically cause a parse to occur.

This is still a very awkward way to validate syntax, but it perhaps
slightly better now.
Merge branch 'pr/2636'

* pr/2636:
  (maint) Fix latent error in parser face
  (PUP-1027) Improve warning message for reserved words
  (PUP-1027) Make it an error to use reserved words in future parser.
  (PUP-1027) Change warning for reserved words to a deprecation warning
  (PUP-1027) Add warnings for bare words that will be keywords in 4.0