(PUP-2898) Specify terminal semicolon for resource bodies

There was a regression in the future parser in d25e462 which caused
resources with multiple attributeless bodies constructed like this:

file {
  '/foo':;
  '/bar':;
}

to fail because the future parser grammar was not allowing the terminal
semicolon.  The acceptance suite picked this up running with parser
future.  It slipped past specs because, even though we have a spec
testing multiple attributeless resource bodies, it lacked a terminal
semicolon.

Henrik Lindberg figured out the minor egrammar fix here to correct the
expression, and a test case is added to catch it in specs.
Merge pull request #2937 from jpartlow/issue/master/pup-2898-resources-with-terminal-semicolons

(PUP-2898) Specify terminal semicolon for resource bodies
(PUP-2379) Note that recurse => inf is deprecated.
Merge pull request #2939 from kylog/issue/pup-2379/deprecate-recurse-inf

(PUP-2379) Note that recurse => inf is deprecated.
(PUP-2924) Set resource_type when retrieving state

Instances of `Puppet::Resource` will follow a very expensive code path when
asked to retrieve their `resource_type`. In the case of whits, this results in
an exhaustive search as Whit types have unique per-instance names that never
map to an on-disk implementation as Ruby code.

This patch avoids some of this work by having the `Puppet::Type#retrieve`
method set `resource_type` to `self.class` after creating a Resource instance.
Merge pull request #2929 from Sharpie/pup-2924-searching-for-whits

(PUP-2924) Set resource_type when retrieving state