(#22129) force explicit file content to be treated as a bytestring

This replicates the implicit behavior in Ruby-1.8.7, and avoids chasing
down every location where a value is passed to `should=` and setting the
encoding there.
use :if so rspec sees the test even if it's not executed
cosmetic changes to package providers
(#8040) Add a function to specify containment

This adds the 'contain' function. When used inside of a class definition, it
will create a containment relationship such that the current class contains
the argument of 'contain'.
(#8040) Don't allow duplicate contain calls
(#22362) Changes in const_defined?() on ruby 1.9 break Puppet::Util::Classgen
(maint) ignore Gemfile.local
Merge pull request #1885 from ferventcoder/stable

(maint) ignore Gemfile.local
(packaging) Update PUPPETVERSION for 3.3.0-rc3
Merge branch 'stable'

* stable:
  (packaging) Update PUPPETVERSION for 3.3.0-rc3
  (maint) ignore Gemfile.local
(#8040) Test order of application for contained classes

This also includes some minor refactoring of the contain function.
(maint) Fix output of ArithmeticExpression label (future parser)

If an ArithmeticExpression is involved in an error and a label
is output as part of the error message this led to an internal
error - undefined o_operator.

This fixes the problem (it should have been o.operator).
(#22442) Fix problem with missing issue ILLEGAL_NAME (future parser)

When a qualified name did not conform to the naming rule for
qualified names a reference was made to an undefined issue.

There was also a problem with the name validation rule as it was not
anchored at the beginning of the matched text. It thus allowed
variable names like `$Aaa` (which should also have been flagged as 
an error). Other naming validation patterns suffered from the same
problem.
(#22442) Update the name validation rule to not accept hyphens

The lexer does not allow them for the 3x standard of not allowing
hyphens in names. The validator should not use a more permissive rule.
(#22442) Add test that capitalized names are flagged as errors.

Capitalized variable names will not be allowed. The future parser
is more strict than 3x where this unfortunately was documented as
being ok.
(maint) Fix failing test.

The test was wrong (inadvertent inclusion of an unexpected error while
testing ability to catch a different problem).
(#8040) Do not create duplicate edges

If a class is contained twice in the same location, this is consistent but
should only create one edge.
(#8040) Clarify behavior in tests around multiple containment
Merge pull request #1878 from pcarlisle/feature/8040-contain-function

(#8040) Add a 'contain' function
(#22356) validate json schemas against the json meta-schema

The recently added json schema were not themselves being
validated.  And unfortunately, the json-schema gem doesn't
do any validation of the input schema, but rather is prone to
raising exceptions if the schema is invalid.

So add a spec test per-schema which validates the schema against
the meta-schema.

Also, fix up resource_type.json so that it is valid.