(maint) Add ruby-augeas to Gemfile and Travis for more test coverage
(#23141) Add OpenBSD to the exclusion list for 'remounts' in mount type
On systems without "-o remount", use "-o update" except for AIX.
(pup-954) Correct flaws in the Pattern Type implementation

* it used AND semantics instead of OR
* it did not accept a Pattern or Regexp as pattern parameter
* it was not assignable by an Enum with matching strings
(maint) Fix type calculations for Variant

Type calculations for variant were wrong (and one of the test
where also wrong).

This corrects the logic; when combining two variants, does types that
are assignable to one in the other are not included (the more general
"shadows" the more specific). Also, when calculating assignability
involving the Data type, a compatible variant must be considered equal;
a Data type is after all just a pre-packaged variant.
(pup-954) Fix issues with typesystem's handling of inference.

This adds additional inference methods:
* infer_generic - a non instance specific result
* infer_set - a non reducing/combining inference
* generalize! - changes instance specific to generic

This makes it possible to evaluate expressions like:
[1,a] =~ Array[Variant[Integer, String]]

This failed previously as the result was that Array[Literal] is
not assignable to either of the two more specific types.
(#23141) Fix remount on bsd if options are specified

The initial fix for 23141 didn't account for a remount when
options were specified.  This caused integration tests to
fail because a) the integration tests assumed mounted is always
false when the mountcmd is called (not true for a remount), and
b) the integration tests weren't updated to consider the 'update'
option.

This patch updates the remount method to append ',update' if
there are already options, and updates the integration tests
accordingly.
(maint) Remove obsolete line of code
(#23141) Split spec test into two for the two non-remounts scenarios

There are now two sets of platforms that don't support "remounts"
by default: those that do a 'mount -o update' and those that do
a 'umount' followed by a 'mount'. This patch splits the spec test
into two accordingly.
(#23141) Remove Darwin from the list of OSs with the new 'update' support
(pup-954) Fix failing test for Ruby 1.8.7 (hash entry order)

One test relied on the order of hash elements which Ruby 1.8.7 does not
guarantee.
Maint: (#18294) Update docs for ip property of Zone type (allows defrouters since 2.6)

Per Redmine 18294, the Zone type has allowed specifying default routers as part
of the IP string since at least 2.6 -- see Redmine 4296 for deets. This commit
updates the doc string to show how to do that.
(PUP-992) Add support for Array as operand in relationships

This adds support for using Arrays with references as operands
in a relationship.
(PUP-994) Ensure relationship operands have uniq content

The relationship operands when containing duplicate entries
caused multiple relationships to be formed between the same entries.
Ensuring that input to the compiler is free of duplicates reduces the
amount of work at a later stage.
(#23373) Support selecting the section

The --section option to the subcommand now allows a specific section of
the configuration file to be manipulated.
(#22744) Filter virtual resources in the static compiler

Previously (on Lost), the static compiler was directly creating and
invoking the regular compiler and then modifying the file resources to
get the desired behavior. Because the static compiler was directly
invoking the regular compiler, it was not invoking all the methods that
would normally get called when the regular compiler was called by the
indirector.

This commit resolves this problem by making the static compiler inherit
from the regular compiler instead of delegating to the compiler. If
there are future changes to how the indirector invokes termini, the
static compiler will still be able to generate catalogs in the same
manner as the regular compiler.

Original patch by Chris Spence <chris.spence@puppetlabs.com>
(PUP-490) Remove partial import-support from future evaluator

The support is removed (basically a mapping of a function call
to the function "import" to a ImportExpression + removing tests.

The intermediate future parser is still using ImportExpression, so
model and related logic not changed, but marked with deprecation
and "to be removed in Puppet 4" (or whenever the intermediate parser
is removed from the code base).

The grammar/parser is modified, but this is only a removal of a comment.
Merge pull request #2140 from kylog/issue/23141/mount-update-on-bsd

Issue/23141/mount update on bsd
(#23373) Have config parsing use IniFile's sections

Since the IniFile code now tracks the sections the config parsing can
utilize it and simplify its flow some
(#7659) Fix commentstack when parsing hashes

We need to pop from commentstack in the grammar whenever we parse a
hash; an LBRACE pushes to commentstack, yet an AST::ASTHash does not
have a doc string which would get the comment popped from the stack
again. This left an extra item on the commentstack which caused all
subsequent Lexer#getcomment to return "".

Make the test for "comments before statement" contain a more complex
example to demonstrate that nested comments should not be returned.