(#18636) Remove reference to non-existant token

There is no CLASSNAME token. By trying to create the acceptable? method
for it the code actually created the acceptable? method on nil.
(#18636) Change to friendlier way of specifying suitability

The previous way of setting the suitability of a token was very hard to
grasp for my feeble mind. It also caused RDoc to have problems parsing
the code unless developers were always aware that they had to enclose
the method definitions in stopdoc/startdoc.

This changes it to provide a proc that determines suitability rather
than trying to change the class after the fact. There may be a small
performance hit because it is now two method calls, but I think this is
much more maintainable.
(#18636) Create only one always acceptable Proc

The previous code would create a new Proc that returned true for every
instance of Token. This commit changes it so that only one is created.
Although there are a finite number of long lived tokens, extracting the
Proc out to a constant provides a name for it, which improves
readability, and reduces the number of objects in memory.
(#18636) Extract named constants for contextual acceptability

The various context checks used to be written inline. This caused a
small amount of duplication and provided no name for when the block
would determine that the token was acceptable. This extracts them all
into constants and places them inside an inner module in order to keep
track of them all. In addition the list of tokens that used to be
constructed for every invocation of several of the blocks are extracted
out and only created once during setup.
Merge branch 'issue/master/18636-rdoc-error-when-installing-gem' of git://github.com/zaphod42/puppet

* 'issue/master/18636-rdoc-error-when-installing-gem' of git://github.com/zaphod42/puppet:
  (#18636) Extract named constants for contextual acceptability
  (#18636) Create only one always acceptable Proc
  (#18636) Change to friendlier way of specifying suitability
  (#18636) Remove reference to non-existant token