(PUP-2703) Make 'tag' be a statement function

Tag function should not require parentheses.
(PUP-1299) Stop stripping arrays in future parser

Resource values that were arrays used to be converted to a single value
iff the array only had one element. This created a lot of confusion for
type and provider authors when the value they would set in a manifest
would not be the value they would get in the type. The conversion causes
large amounts of code that would check for values that aren't arrays and
convert them to arrays in various places. There were also often tests
that would be written directly against providers that would then not
catch errors in real use because the author was unaware, or just forgot,
that the array conversion would happen.

Under the future parser this is no longer done. The old behavior,
however, won't issue a deprecation warning because there isn't anything
that can be done about it from a user's perspective. The most likely
outcome from this change is that some manifests may stop working because
a value just happened to be a single-valued array that was on a
parameter that is not supposed to take an array. In such cases the error
would have been masked previously, but now will be uncovered.
Merge pull request #2791 from zaphod42/issue/master/pup-1299-magic-array-parameters

(PUP-1299) Stop stripping arrays in future parser
Merge pull request #2713 from hlindberg/PUP-2703_make-tag-into-statement

(PUP-2703) Make 'tag' be a statement function
Merge branch 'master' of https://github.com/puppetlabs/puppet